Perl 异常处理之 autodie 和 Try::Tiny
浏览:2636次 出处信息
现在要讲的是 audodie 和 Try::Tiny 这是近来看的几本 Perl 书常常提到的,记个笔记。
有时我们常常写多个 open ,然后还要写上多次 die 象下面,读一个文件,然后写一个文件,有时我写的 open 会超过 4 个,要写很多次 die 这时非常麻烦。我们如果直接 use autodie 就直接能解决所有问题。所有的 die 的地方都能自动实现。
open my $fh, '<', $in or die "$!"; open my $fh, '>', $out or die "$!";
加上 autodie 以后就成了
use autodie open my $fh, '<', $in; open my $fh, '>', $out;
有了这个方便多了,有时我们常常不想让程序 die 了后退出,想抓到原因,得使用 eval 然后来检查 $@.象下面这样。
use autodie; eval { open my $fh, '<', $in; # ..... } if ($@) { # TODO } eval { open my $fh, '>', $out; } if ($@){ # TODO }
还好上次只有二个 open 。。。是不是感觉很痛苦,要是 open 之类会 die 的更加多点的话。另外,有没有发现,只要第一个 open 失败,第二个 if ($@) 永远会失败。因为 $@ 的标记下面也检查同样的变量。这时使用 Try::Tiny 中的 try catch 吧(Python 原生支持)。
这时使用很方便
use autodie; use Try::Tiny; try { open my $fh, '<', $in; # ..... open my $fh, '>', $out; # ..... } cacht { print "Error $_\n"; }
有时我们还可以在这个地方使用 try Catch
做程序流程控制
use autodie; use Try::Tiny; try { &sub1(); &sub2(); &sub3(); } cacht { &sub4(); &sub5(); &sub6(); }
象上面,只要在 sub1, sub2, sub3 任意一个子函数 die 出来,这个流程就认为出错,就做其它的另一种方案的流程 sub4,sub5,sub6.
建议继续学习:
- perl更新/修改/删除文本文件内容 (阅读:9436)
- PHP的异常原理与实例说明 Fatal error: Uncaught exception (阅读:8850)
- perl大牛flw传说 (阅读:6513)
- perl模块Getopt::Std用法及实例-从命令行读取参数模块 (阅读:5882)
- 是返回错误码,还是抛出异常?说说我的选择 (阅读:5899)
- [Perl] Template::Toolkit 模板技术. (阅读:5367)
- 在perl中连接和使用sqlite做数据存储 (阅读:5056)
- Perl命令行常见用法及技巧 (阅读:4807)
- perl模块之MIME::Lite发送有附件的邮件 (阅读:4444)
- perl的expect使用方法,实现非交互式登录。 (阅读:4494)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:记录程序日志
文章信息
- 作者:扶凯 来源: 扶凯
- 标签: audodie Perl 异常
- 发布时间:2011-06-01 13:44:17
建议继续学习
近3天十大热文
- [55] Oracle MTS模式下 进程地址与会话信
- [54] IOS安全–浅谈关于IOS加固的几种方法
- [53] 如何拿下简短的域名
- [53] android 开发入门
- [51] Go Reflect 性能
- [50] 图书馆的世界纪录
- [48] 读书笔记-壹百度:百度十年千倍的29条法则
- [46] 【社会化设计】自我(self)部分――欢迎区
- [39] 程序员技术练级攻略
- [32] 视觉调整-设计师 vs. 逻辑