在我的应用程序中,我使用XML :: Simple并使用导出的XMLin()来解析XML文件。一切顺利,直到将无效的文件路径用作XMLin()的参数。
应用程序终止,因为XML :: Simple在给出无效的文件路径时使用了die()或类似的方法。
我希望我的应用程序继续运行,即使XML :: Simple遇到了错误。那我该怎么办?
答案 0 :(得分:6)
处理异常。
一般方式:
use English qw( -no_match_vars );
eval {
run_your_code_that_might_die();
};
if ( my $error = $EVAL_ERROR ) {
die $error unless $error =~ m{some|known|error};
handle_known_error( $error );
}
只有英语才能使用$EVAL_ERROR代替$@。
通常,请检查perldoc for eval function。
答案 1 :(得分:5)
以块eval包裹呼叫:
eval {
do_stuff_that_might_die();
1;
} or do {
# Only executes if the call died, in case you want
# to do any cleanup or error handling
print "It died, but life goes on!\n";
}; # <-- Don't forget the semicolon!