编程学习biancheng.45soft.com 本站提供了各种在线教程和资料,供大家学习与参考.
编程学习
当前位置: 主页 > Perl > 诊断消息 >

Perl 诊断消息


这些消息分成下列几类(按照绝望的级别递增排列):

类别 含义
(W) 警告(可选)
(D) 反对(可选)
(S) 严重警告(必需)
(F) 致命错误(可捕获)
(P) 你应该从未见过的内部错误(恐慌性的)(可捕获)
(X) 非常致命的错误(不可捕获)
(A) 外来错误消息(不是Perl生成的)

来自上面头三个级别的消息中的主要部分(W,D和S)都可以用warnlngs pragma 或-w和-W开关来控制。如果一条消息可以用warnlngs pragma控制,那么它的警告种类在标识字符后面给出;如,(W misc)表示一个杂项警告。warnlngs pragma
在第三十一章介绍过。


可以通过把$SIG{__WARN__}设置为一个例程的引用来捕获警告,而不是打印它们,每次警告时都会调用这个例程。还可以通过设置$SIG{__WARN__}为一个子例程引用,在一个可捕获的错误“退出”之前捕获控制,当你从中退出时,还是会抛出异常。换句话说,你不能用这个方法“解除致命化”一个异常。你必须用eval来实现这个目的。


缺省警告总是打开的,除非你用warnings pragma或者-x开关明确地关闭了它们。


在随后的消息中,%s表示一个被内插的字符串,只有在生成该消息时才能决定它的内容。(类似,%d代表一个内插的数值——想想printf格式就明白了,但我们在这里用%d表示任意基的数字。)请注意有些消息以%s开头——意味着按照字母顺序排列它们是有问题的。如果你预期的消息没有在预期的位置出现,那么你就应该在这些消息里面找找看。符号"%-?@
排在在字母字符前面,而[和\排在后面。


如果认定一个bug是Perl而不是你自己产生的,那么你应该把它缩减成一个最小化的测试环境,然后用Perl自带的perlbug程序报告它。

Perl
Perl 诊断消息