perl函数说明(die)
来源:互联网 发布:ubuntu安装有道词典 编辑:程序博客网 时间:2024/06/05 06:27
die die LIST die
在 eval 之外,这个函数把 LIST 里的数值连接起来打印到 STDERR 并且带着当前的 $!(C 库的 errno 变量)的值退出。如果 $! 为 0,它就带着 $?>>8 值(这个值是从 system,wait,管道 close,或者 `commend` 退出的最后一个子进程的状态)退出。如果 $?>>8 为 0 ,那么该函数带着 255 退出。
在一个 eval 里面,该函数把 $@ 变量设置为将要生成的错误信息,然后退出 eval,而 eval 返回 undef。因此 die 函数可以用于抛出命名例外,而这个命名例外可以在程序的更高层捕获。参阅本章稍后的 eval。
如果 LIST 是一个单对象引用,那么就假设该对象是一个例外对象,并且象在 $@ 里的例外那样毫不修改地返回。
如果 LIST 为空并且 $@ 已经包含一个字串值(通常是来自前面一次 eval),那么就在该字串后面附加“\t ...propagated”再次使用。这样做有益于传播(抛出)例外:
eval { ... }; die unless $@ =~ /Expected exception/;
如果 LIST 为空并且 $@ 已经包含一个例外对象,则调用 $@->PROPAGATE 方法来判断该例外应该如何传播。
如果 LIST 为空并且 $@ 也为空,那么使用字串“Died”。
如果 LIST 的最后一个值不是以换行符结尾(而且你不是在传递一个例外对象),则在该信息后面附加当前脚本文件名,行号,以及输入行数(如果有),然后再附加一个换行符。提示:有时候在你的信息上附加", stopped" 会令它更有意义,因为后面会附加 "at scriptname line 123" 这样的东西。假设你正在运行一个叫 canasta 的脚本;看看下面两种退出方法的区别:
die "/usr/games is no good"; die "/usr/games is no good, stopped";
它们分别输出:
/usr/games is no good at canasta line 123. /usr/games is no good, stopped at canasta line 123.
如果你希望自己的错误信息报告文件名和行数,使用特殊标记 _ FILE _ 和 __ LINE __:
die '"', __FILE__, '", line ', __LINE__, ", phooey on you!\n";
这句代码生成下面这样的东西:
"canasta", line 38, phooey on you!
再说另外一种风格——看看下面两个相等的例子:
die "Can't cd to spool: $!\n" unless chdir '/usr/spool/news'; chdir '/usr/spool/news' or die "Can't cd to spool: $!\n";
因为重要的部分是 chdir,所以通常会用第二种形式。
又见 exit,warn,%SIG,和 Cary 模块。
- perl函数说明(die)
- perl ---die 函数
- 【转】Perl的die、warn、eval函数
- Perl的die、warn、eval函数
- perl进程终止函数die/warn/exit/kill
- perl 函数说明(chdir)
- perl函数说明(chmod)
- perl函数说明(chmop)
- perl函数说明(chop)
- perl函数说明(chown)
- perl函数说明(chr)
- perl函数说明(chroot)
- perl函数说明(close)
- perl函数说明(closedir)
- perl函数说明(connect)
- perl函数说明(cos)
- perl函数说明(crypt)
- perl函数说明(defined)
- 第五章表达式
- MFC TreeCtrl 控件(一):简单使用
- leetcode: Minimum Path Sum
- 近期学习计划
- Raphael.js API之Element.mousedown(),Element.mousemove(),Element.mouseup(),Element.mouseout(),Element.
- perl函数说明(die)
- 【转】Spring事务配置和隔离级别
- block(块),page(页),buffer cache(块缓冲)区别与联系
- 网页分享技术—对网页分享技术的思考
- Qt探秘——谈ui文件的用法
- 瑞琪儿我如果鄂一体化人缘好
- 更新网站标题解决百度索引每天都增加快照不更新360搜索和搜狗不收录
- asp.net 中文传值乱码问题的解决
- centos 允许普通用户登陆