У меня есть Perl-скрипт, который использует некоторую библиотеку C++, которая, вероятно, завернута с помощью xs. Когда библиотека выдает исключение, она выдает мой скрипт Perl даже при вызове изнутри eval
. Как я могу пропустить исключение и предотвратить сбой моего скрипта?
terminate called after throwing an instance of 'blaException'
what(): blablabla.cpp:202: Failed to bla
Abort trap: 6 (core dumped)
Версия Perl v5.12.4
Вы не можете. Ядро дампа является фатальным, поэтому в этом случае игра заканчивается. Правильным решением было бы убедиться, что код не сбой, но если у вас нет контроля над библиотекой C++, что будет сложно.
Возможно, есть возможность обхода путем разворачивания вашего скрипта перед тем, как вы звоните в библиотеку, а затем перезагрузитесь, если он сработает, но это не решение, которое я когда-либо рассматривал бы в процессе производства в любом месте.