0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: функция, go, panic, error</p>
1
<p>Теги: функция, go, panic, error</p>
2
<p>Как известно, обычный способ сообщения об ошибке вызывающей стороне заключается в возврате<em>error</em>как дополнительного возвращаемого значения. Хорошо известным примером является и канонический метод<strong>Read</strong>, возвращающий число прочитанных байтов и<em>error</em>. Но что делать, когда ошибка не может быть возвращена?</p>
2
<p>Как известно, обычный способ сообщения об ошибке вызывающей стороне заключается в возврате<em>error</em>как дополнительного возвращаемого значения. Хорошо известным примером является и канонический метод<strong>Read</strong>, возвращающий число прочитанных байтов и<em>error</em>. Но что делать, когда ошибка не может быть возвращена?</p>
3
<p>Ведь иногда программа просто не может продолжать работать.</p>
3
<p>Ведь иногда программа просто не может продолжать работать.</p>
4
<p>В этой ситуации поможет встроенная функция<em>panic</em>. Она создает ошибку в процессе выполнения (<em>run-time error</em>), которая останавливает программу. Эта функция принимает 1 аргумент произвольного типа - чаще всего, строку, что необходимо для печати сообщения о завершении программы. Также это способ указать, что произошло что-то невозможное, к примеру, выход из бесконечного цикла.</p>
4
<p>В этой ситуации поможет встроенная функция<em>panic</em>. Она создает ошибку в процессе выполнения (<em>run-time error</em>), которая останавливает программу. Эта функция принимает 1 аргумент произвольного типа - чаще всего, строку, что необходимо для печати сообщения о завершении программы. Также это способ указать, что произошло что-то невозможное, к примеру, выход из бесконечного цикла.</p>
5
<p>И это лишь пример, однако реальным библиотечным функциям следует избегать<em>panic</em>. Как правило, если проблему можно замаскировать либо есть возможность сделать какой-нибудь обходной путь, то всегда будет лучше позволить программе продолжить работу, чем полностью ее остановить. Однако здесь следует привести и контрпример во время инициализации: когда библиотека по-настоящему не может настроить себя, то бывает разумно, скажем так, "паниковать".</p>
5
<p>И это лишь пример, однако реальным библиотечным функциям следует избегать<em>panic</em>. Как правило, если проблему можно замаскировать либо есть возможность сделать какой-нибудь обходной путь, то всегда будет лучше позволить программе продолжить работу, чем полностью ее остановить. Однако здесь следует привести и контрпример во время инициализации: когда библиотека по-настоящему не может настроить себя, то бывает разумно, скажем так, "паниковать".</p>
6
<p><em>По материалам блога https://golang-blog.blogspot.com/.</em></p>
6
<p><em>По материалам блога https://golang-blog.blogspot.com/.</em></p>
7
7