HTML Diff
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