LINUX.ORG.RU

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

Исправление Legioner, (текущая версия) :

Ну вот это и называется сознательно игнорировать ошибку. Такое можно в любом языке, это не про забывчивость.

А ещё есть такое понятие, как то, насколько бросается в глаза такой игнор. `_` это один символ, причём из вызова совсем не очевидно, что там была ошибка, а не просто ненужный выходной параметр. А чтобы проигнорировать исключение — тут нужен целый ритуал.

Потому что в Println обычно используют для диагностики, если stdout накрылся, то можно забить; подозреваю что 99% вызовов printf в C не проверяют код возврата, и не потому что забывают.

Странная логика. 99% консольных утилит используют stdout не для диагностики, а для вывода информации. То, что в C не проверяют код возврата, это хороший аргумент к тому, что это просто плохая система обработки ошибок. В большинстве кода на C и malloc-и не проверяют по той же причине: слишком муторно, проще грохнуться и сказать юзеру, чтобы не страдал фигнёй и поставил побольше памяти.

Ну вот вызвал я какую-то функцию, она мне вернула error. Я хз, че за error, распечатать его в лог со стектрейсом и грохнуться со всей силы.

Ну как раз panic помогает в таких случаях. Ну или debug.Stack(). Еще есть библиотеки для логгирования, которые умеют stacktrace из коробки.

panic не поможет, потому что в этом месте стек уже будет давно потерян. Стек нужен в том месте, где был создан error. Именно он содержит осмысленную информацию, необходимую для понимания ошибки.

Исходная версия Legioner, :

Ну вот это и называется сознательно игнорировать ошибку. Такое можно в любом языке, это не про забывчивость.

А ещё есть такое понятие, как то, насколько бросается в глаза такой игнор. `_` это один символ, причём из вызова совсем не очевидно, что там была ошибка, а не просто ненужный выходной параметр. А чтобы проигнорировать исключение — тут нужен целый ритуал.

Потому что в Println обычно используют для диагностики, если stdout накрылся, то можно забить; подозреваю что 99% вызовов printf в C не проверяют код возврата, и не потому что забывают.

Странная логика. 99% консольных утилит используют stdout не для диагностики, а для вывода информации. То, что в C не проверяют код возврата, это хороший аргумент к тому, что это просто плохая система обработки ошибок.

Ну вот вызвал я какую-то функцию, она мне вернула error. Я хз, че за error, распечатать его в лог со стектрейсом и грохнуться со всей силы.

Ну как раз panic помогает в таких случаях. Ну или debug.Stack(). Еще есть библиотеки для логгирования, которые умеют stacktrace из коробки.

panic не поможет, потому что в этом месте стек уже будет давно потерян. Стек нужен в том месте, где был создан error. Именно он содержит осмысленную информацию, необходимую для понимания ошибки.