Похоже, что сообщество Perl считает, что Try :: Tiny является предпочтительным способом обработки исключений. «Мягкая политика», на которую вы ссылаетесь, вероятно, вызвана комбинацией:
- Perl не является полностью объектно-ориентированным языком. (например, в отличие от Java, где
Вы не можете не иметь дело с исключениями.)
- Фон многих разработчиков Perl. (Языки вроде C 1 и оболочки не имеют
механизмы исключения.)
- Вид задач, для которых люди склонны использовать Perl. (Небольшие скрипты для обработки текста и
создание отчета, где обработка исключений не требуется.)
- Perl не имеет (хорошего) встроенного механизма исключений.
Обратите внимание, что последний элемент означает, что вы увидите много кода, подобного этому:
eval { something() };
if ($@) {
warn "Oh no! [$@]\n";
}
Это обработка исключений, даже если она не использует синтаксис try / catch. Тем не менее, он хрупок и сломается во многих тонких крайних случаях, о которых большинство людей не задумываются. Try :: Tiny и другие модули обработки исключений в CPAN были написаны, чтобы упростить процесс получения прав.
1. C имеет setjmp()
и longjmp()
, которые могут использоваться для очень грубой формы обработки исключений.