LINUX.ORG.RU

История изменений

Исправление 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 раз меньше букв, я бы её прочитал.