2009年8月6日星期四

[PerlChina] Re: 错误处理

perl -MCarp=verbose -e "package pack; sub pub { Carp::carp(qq(hello)); print q(world); }; pub;" 
hello at -e line 1
pack::pub() called at -e line 1
world

这个模块也不错,一直看到有人用,今天尝试了一下感觉还不错。

2009/8/7 yi wang <wangyi2412@gmail.com>
学习了,谢谢!

2009/8/7 smallfish <smallfish.xy@gmail.com>

同理,偶也喜欢die。
--
blog: http://hi.baidu.com/smallfish_xy


2009/8/7 Qiang (James) <shijialee@gmail.com>

yi wang wrote:
> 诸位,请教大家一个开放问题
> 诸位在用perl写程序时,是如何做错误处理的? 我使用的一个方法是子程序返回错
> 误代码,然后在头文件中建立错误代码和错误消息的hash表。但是,我自己觉得这
> 个方法不够smart, 诸位有没有什么其他办法呢?
>

我的程序是直接在出错的地方 die 而不是返回错误代码。其中一个好处是利用
die 函数的特性直接报告哪行那个文件出错 (如果是 apache 的话,错误信息就直
接写在 log 文件里,方便跟踪错误),另一个好处是在出错的地方直接返回错误
信息,而错误代码不够直观。

具体的使用大概如下:

简单的程序直接 die "错误信息";

稍大型,复杂的程序的话就写一个 config 文件来储存错误信息, 然后直接在出错
的地方 die MyErrorConfig->msg("Password_File_Not_Found"); 如果想处理这些
错误而不是让用户看到具体的错误信息,eval { sub_where_it_dies() }; if( $@
) { #返回一般性错误提示 }

另外,mastering perl 的第十二章对错误信息的生成和报告进行了讨论。

暂时想到的就这些了。

Qiang












--
和你在一起





--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

没有评论: