Perl Carp承认没有终止申请

时间:2015-12-02 17:44:42

标签: perl error-handling

我有一个使用的模块 Carp::confess "<message here>"(假设此语句在子例程B中)。根据我的解释,消息将输出到STDERR,应用程序应该在那时终止。但是应用程序不会终止。我在confess语句之前和之后放置了一个print语句,以确保confess语句确实执行。 我甚至检查了调用子例程的子例程A是否定义了一个eval {}块来捕获错误而不对其进行操作。但情况似乎并非如此。

还有其他场景,Carp :: confess不会终止程序吗?我对此感到有点困惑。

感谢您

1 个答案:

答案 0 :(得分:0)

eval BLOCKeval EXPRdo EXPR和调用Perl代码的XS代码是唯一能够捕获异常的内容。

也有可能首先抛出异常,例如当die被严重覆盖时。