Ошибки предназначены для обработки ожидаемых условий, которые могут возникнуть во время нормального выполнения программы. Они могут быть возвращены из функций, и вызывающий код должен их явно проверять и обрабатывать.
Panic предназначен для неожиданных условий, которые представляют серьёзные, необратимые ситуации. Когда возникает panic, он сразу же прерывает нормальный ход выполнения.
Ошибки в Go следуют стандартному паттерну, где функции возвращают ошибку в качестве последнего возвращаемого значения:
result, err := someFunction()
if err != nil {
// Обработай ошибку как надо
}
Panic нужно использовать только в ситуациях, где:
Типичные примеры — разыменование нулевого указателя или неудачные type assertion'ы, которые не были пойманы на этапе компиляции.
Философия Go делает упор на явную обработку ошибок вместо исключений. Это означает:
Понимание этого различия — основа написания идиоматичного кода на Go, который надёжен и удобен в сопровождении.
В Go panic следует использовать для ожидаемых условий при нормальном выполнении программы, а error зарезервировать для действительно исключительных ситуаций, из которых невозможно восстановиться.
Новый — ещё не проверен сообществом
Вы