История изменений
Исправление den73, (текущая версия) :
А вот кстати, есть ведь на самом деле как минимум, 4 вида обработки ошибок в go:
- err != nil - плохо то, что природа ошибки неизвестна. Т.е. кроме многословия, другого профита нет
- паника. Вроде бы для «действительно серьёзных ситуаций». Но что это означает? Если программа написано неправильно, то лучше её завершить. Если ясно, что мы можем локализовать проблему в рамках горутины, то паника подходит - и ничем не хуже возврата кодов ошибок.
- os.exit(1) - как я понял, этот вариант обходится скромным молчанием, с зря. В случае, если программа совсем неправильная, например, defer содержит безконечный цикл, может оказаться, что падение приложения прямо сейчас - это лучший выход. Опять же, нужен анализ, что мы наменяли во внешнем мире и к каким последствиям приведёт os.exit(1). Закрытием файлов уже занимается ОС.
- kill -9 - может произойти в любой момент, но ведь и о нём нужно подумать.
Статья, может быть, и классная, и если бы в ней было хотя бы в 5 раз меньше букв, я бы её прочитал.
Исправление den73, :
А вот кстати, есть ведь на самом деле как минимум, 4 вида обработки ошибок в go:
- err != nil - плохо то, что природа ошибки неизвестна. Т.е. кроме многословия, другого профита нет
- паника. Вроде бы для «действительно серьёзных ситуаций». Но что это означает? Если программа написано неправильно, то лучше её завершить. Если ясно, что мы можем локализовать проблему в рамках горутины, то паника подходит
- os.exit(1) - как я понял, этот вариант обходится скромным молчанием, с зря. В случае, если программа совсем неправильная, например, defer содержит безконечный цикл, может оказаться, что падение приложения прямо сейчас - это лучший выход. Опять же, нужен анализ, что мы наменяли во внешнем мире и к каким последствиям приведёт os.exit(1). Закрытием файлов уже занимается ОС.
- kill -9 - может произойти в любой момент, но ведь и о нём нужно подумать.
Статья, может быть, и классная, и если бы в ней было хотя бы в 5 раз меньше букв, я бы её прочитал.
Исходная версия den73, :
А вот кстати, есть ведь на самом деле как минимум, 4 вида обработки ошибок в go:
- err != nil - плохо то, что природа ошибки неизвестна. Т.е. кроме многословия, другого профита нет
- паника. Вроде бы для «действительно серьёзных ситуаций». Но что это означает? Если программа написано неправильно, то лучше её завершить. Если ясно, что мы можем локализовать проблему в рамках горутины, то паника подходит
- os.exit(1) - как я понял, этот вариант обходится скромным молчанием, с зря. В случае, если программа совсем неправильная, например, defer содержит безконечный цикл, может оказаться, что падение приложения прямо сейчас - это лучший выход. Опять же, нужен анализ, что мы наменяли во внешнем мире и к каким последствиям приведёт os.exit(1)
- kill -9 - может произойти в любой момент, но ведь и о нём нужно подумать.
Статья, может быть, и классная, и если бы в ней было хотя бы в 5 раз меньше букв, я бы её прочитал.