Junior — Middle
Как се управляват изключенията и грешките във вашето приложение?
sobes.tech AI
Отговор от AI
В Go управлението на грешки се различава от много други езици, тъй като тук няма обичайните изключения. Вместо това, функциите обикновено връщат стойност на грешка (error) като втори резултат.
Основни подходи:
-
Проверка на грешката след извикване на функция:
result, err := someFunction() if err != nil { // обработка на грешката log.Println("Грешка:", err) return err } // продължаване с result -
Създаване на собствени типове грешки с помощта на
errors.Newилиfmt.Errorfза по-информативни съобщения. -
Паника (
panic) и възстановяване (recover) се използват рядко, главно за критични грешки, които не трябва да се случват в нормалния поток. -
Логиране на грешки и връщането им нагоре по стека за централизирана обработка.
Пример за обработка на грешка:
package main
import (
"errors"
"fmt"
)
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("деление на нула")
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Грешка:", err)
return
}
fmt.Println("Резултат:", result)
}
По този начин, в Go, грешките се обработват явно, което повишава четливостта и надеждността на кода.