Предотвратите исключение C ++ от сбоя моего сценария Perl

0

У меня есть 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

Теги:
exception-handling
xs

1 ответ

1
Лучший ответ

Вы не можете. Ядро дампа является фатальным, поэтому в этом случае игра заканчивается. Правильным решением было бы убедиться, что код не сбой, но если у вас нет контроля над библиотекой C++, что будет сложно.

Возможно, есть возможность обхода путем разворачивания вашего скрипта перед тем, как вы звоните в библиотеку, а затем перезагрузитесь, если он сработает, но это не решение, которое я когда-либо рассматривал бы в процессе производства в любом месте.

  • 0
    В какой части стека вызовов C ++ -> XS -> Perl выполняется «прерывание» / «прерывание прерывания»? Должен ли я перехватывать исключения в XS и перекидывать их как Perl-совместимые?
  • 1
    Проблема должна появиться через сигнал на стороне Perl, например, perltricks.com/article/37/2013/8/18/…

Ещё вопросы

Сообщество Overcoder
Наверх
Меню