是否可以捕获发生在另一个perl模块中的死亡消息?

是否可以捕获发生在另一个perl模块中的死亡消息?,perl,lwp,die,xml-simple,Perl,Lwp,Die,Xml Simple,我有一个用Perl编写的SOAP客户端,它使用LWP包进行HTTPS传输,使用XML::Simple解析XML有效负载。对XMLin的调用有时会失败,出现一个die(),然后我的脚本就死了,必须由我编写的监控程序重新启动才能检测到这一点。这真的是不可取的,所以我想知道Perl是否有任何类似C++异常处理机制的工具,我可以在其中捕获死亡消息,忽略它报告错误,让脚本继续运行,就像发生错误一样。我已经阅读了许多Perl书籍并寻找了这些内容,但我没有找到任何东西。这会扼杀我的应用程序,但我不想编写自己的

我有一个用Perl编写的SOAP客户端,它使用
LWP
包进行HTTPS传输,使用
XML::Simple
解析XML有效负载。对
XMLin
的调用有时会失败,出现一个die(),然后我的脚本就死了,必须由我编写的监控程序重新启动才能检测到这一点。这真的是不可取的,所以我想知道Perl是否有任何类似C++异常处理机制的工具,我可以在其中捕获死亡消息,忽略它报告错误,让脚本继续运行,就像发生错误一样。我已经阅读了许多Perl书籍并寻找了这些内容,但我没有找到任何东西。这会扼杀我的应用程序,但我不想编写自己的XML解析代码,除非我必须这样做。

是的;这样做的基本机制是
eval

sub a { die "BAD"; }
eval { a(); }
print "Survived an exception $@";

但是,您应该使用更高层次的构造(尽管是在此基础上构造的)是有原因的,比如et al.(参见文档底部的链接)。

是;这样做的基本机制是
eval

sub a { die "BAD"; }
eval { a(); }
print "Survived an exception $@";
但是,您应该使用更多的高级构造(尽管是在此基础上构造的)是有原因的,比如et al.(请参见文档底部的链接)。

您可以捕获“die”,但无法通过捕获来阻止脚本死亡:*当“\u die\uuu”钩子例程返回时,除非钩子例程本身通过“goto”、循环出口或“die()”退出,否则异常处理将继续进行,就像在没有钩子的情况下一样*

但是,您可以在eval{}块内运行容易调用die()的例程。

您可以捕获“die”,但不能通过捕获它来阻止脚本死亡:*当“\uuuu die\uuuu”钩子例程返回时,异常处理将继续进行,就像在没有钩子的情况下一样,除非钩子例程本身通过“goto”、循环出口或“die()”退出*


但是,您可以在eval{}块内运行容易调用die()的例程。

因此,只要包遇到调用die()的条件,我的脚本就会终止??我什么都做不了?哦,看起来我最好开始C++版本……嗯,是的,除了那个你已经告诉过两次的EVE,所以本质上,每当包遇到调用die()的条件时,我的脚本就会终止。我什么都做不了?哦,看起来我最好开始C++版本……嗯,是的,除了你曾经告诉过的两次EVE,现在使用一个高级的SOAP库,比如它自己的错误处理程序。使用一个高级的SOAP库,比如有它自己的错误处理程序。谢谢。我会试试这个。谢谢。我会试试看。