相关疑难解决方法(0)

如何绕过我无法修改的Perl库中的'die'调用?

是的,问题出在我正在使用的库中,不,我无法修改它.我需要一个解决方法.

基本上,我正在处理一个写得很糟糕的Perl库,当遇到读取文件的某个错误条件时,它会以'die'退出.我从一个程序中调用这个例程,该程序循环遍历数千个文件,其中一些文件很糟糕.坏文件发生; 我只想让我的例程记录错误并继续前进.

如果我可以修改库,我只需更改

die "error";
Run Code Online (Sandbox Code Playgroud)

到了

print "error";return;
Run Code Online (Sandbox Code Playgroud)

, 但是我不能.有什么方法可以解决这个例程,以便坏文件不会崩溃整个过程?

关注问题:使用"eval"来解决容易崩溃的调用很有效,但是如何在该框架内设置可捕获错误的处理?来描述:

我有一个子程序调用库 - 崩溃 - 有时很多次.而不是使用eval {}在这个子例程中调用每个调用,我只是让它死掉,并在调用我的子例程的级别上使用eval {}:

my $status=eval{function($param);};
unless($status){print $@; next;}; # print error and go to next file if function() fails
Run Code Online (Sandbox Code Playgroud)

但是,我可以在函数()中捕获错误条件.在子例程和调用例程中设计错误捕获的最恰当/优雅的方法是什么,以便我获取捕获和未捕获错误的正确行为?

error-handling perl die

30
推荐指数
3
解决办法
1万
查看次数

标签 统计

die ×1

error-handling ×1

perl ×1