Глядя на источник autodie
, я вижу, что он умирает, используя:
Carp::croak sprintf(
ERROR_WRONG_FATAL, $Fatal::VERSION, $VERSION, $autodie_path
);
Если вы сделаете то же самое из своего кода, я ожидаю, что вызывающий код получит что-то, выглядящее както же самое.
Редактировать: Как указано в комментариях к этому ответу, autodie
фактически умирает изнутри Fatal
.Пятиминутный взгляд на источник Fatal
не позволил выяснить, как / где он умирает, в основном просто из-за этого я запутался в связи между двумя модулями. [1]
Если толькоЕсли вы хотите покопаться в источнике Fatal
, следующий вариант - определить, какие функции исключений autodie
важны для вас, и продублировать их.Исходя из этого, звучит так, что это может быть так же просто, как определить класс исключений, используемый autodie
, и выбросить объекты исключений этого же класса.
[1] Fatal
имеет много «use autodie»вместо этого, потому что он делает то, что Fatal не "комментирует, но autodie
, по-видимому, делегирует почти все Fatal
, так что может показаться, что то, что autodie
делает, а Fatal
- это все еще на самом делесделано Fatal
...