当XMLin呱呱叫时,如何阻止我的应用程序被终止?

时间:2009-08-26 10:59:12

标签: perl

在我的应用程序中,我使用XML :: Simple并使用导出的XMLin()来解析XML文件。一切顺利,直到将无效的文件路径用作XMLin()的参数。

应用程序终止,因为XML :: Simple在给出无效的文件路径时使用了die()或类似的方法。

我希望我的应用程序继续运行,即使XML :: Simple遇到了错误。那我该怎么办?

2 个答案:

答案 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!