Как я могу предотвратить завершение моего приложения, когда XMLin квакает? - PullRequest
1 голос
/ 26 августа 2009

В моем приложении я использую XML :: Simple и использую экспортированный XMLin () для разбора файлов XML. Все идет хорошо, пока в качестве параметра для XMLin () не используется неверный путь к файлу.

Приложение завершено, потому что XML :: Simple использовал die () или какой-то подобный метод, когда ему был указан неверный путь к файлу.

Я хочу, чтобы мое приложение продолжало работать, хотя XML :: Simple встретил ошибку. Так что мне делать?

Ответы [ 2 ]

6 голосов
/ 26 августа 2009

Обработка исключения.

Общий способ:

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 для функции eval .

5 голосов
/ 26 августа 2009

Завершение вызова в блок 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!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...