加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl模块是否会引发异常(die / croak)?

发布时间:2020-12-15 21:33:11 所属栏目:大数据 来源:网络整理
导读:在编写Perl模块时,在模块中使用croak / die是个好习惯吗? 毕竟,如果调用者不使用eval块,模块可能会使调用它的程序崩溃. 在这些情况下最好的做法是什么? 解决方法 我通常喜欢异常,如果你指出某种错误.否则,您不得不花费更多的时间在代码库的不同级别上花费
在编写Perl模块时,在模块中使用croak / die是个好习惯吗?

毕竟,如果调用者不使用eval块,模块可能会使调用它的程序崩溃.

在这些情况下最好的做法是什么?

解决方法

我通常喜欢异常,如果你指出某种错误.否则,您不得不花费更多的时间在代码库的不同级别上花费错误处理代码,而不是将错误处理集中在系统的相应层中 – 其他原因.

你可能会发现这个old thread on perlmonks是一个有用的阅读.我会在下面再现我的评论,因为我主要同意我当时写的内容:-)

我喜欢例外的一些原因:

稳健性我可以忘记检查返回的错误值.我不能忘记检查异常.
>简洁.我更喜欢:

$o->foo->bar->fribble->ni

$o->foo or return(ERROR_FOO);
$o->bar or return(ERROR_BAR);
$o->fribble or return(ERROR_FRIBBLE);
$o->ni or return(ERROR_NI);

>清晰度使用异常代码,“正常”控件流程更为明确,因为它不会被错误处理代码所掩盖.我认为上面的两个代码示例中的第一个比第二个代码更直接地显示了代码的意图.
分离问题错误条件和错误处理程序是不同的想法.

>您可能希望根据上下文以不同的方式处理错误.
>您可能还不知道错误发生时应该如何处理.
>您可能不知道在编写代码时如何处理错误.

使用返回错误代码样式,您最终必须:

可以做出关于如何处理决定的错误条件.
>传播错误处理程序到可能发生错误的地方

如果在错误条件和错误处理程序之间存在很多级别的代码,那么这两个选项都将变得凌乱.
>返回值和错误条件之间不要混淆.

可能还有一些;-)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读