PHP异常处理(Exception)什么情况下使用?

根据PHP官方说明PHP的错误机制(错误码)出现于异常之前,用于输入PHP的错误信息,从衍生性来看异常这个概念可以看成是自定义错误机制,用于弥补PHP错误机制(错误码)的不足。

这就说明了一点在信息量方便,异常, 可以包含更丰富的错误信息, 比如错误信息, 错误码, 错误的行数, 文件, 甚至出错上下文, 避免错误信息不丰富的问题。

此次是性能上,对于异常处理的性能问题,这里附图说明,如下:

注: 图中有一处不严谨, 即在确定是否最后一个catch块的时候, 会同时判断(is_a), 如果是才进入最后一个catch块执行。

性能和方便, 往往是一个矛盾体,根据场景,自己来选择。

最后一个要讨论的是强迫症问题,如果所有错误都用异常,那么你会看到满屏的try{}catch{},错误很多,有自己决定怎么解决。这就是现在很多框架下会有自定义异常的扩展需求(太多可能的Uncaught Exception),我想意思可能是,交给用户自己设计。

注:使用try{}catch{}不能铺货WARNING错误,需要自己定义捕获错误的函数,例如:

  1. set_error_handler(function () {  

  2.     throw new Exception('Ach!');  

  3. });  

  4.    

  5. try {  

  6.     $result = 4 / 0;  

  7. } catch( Exception $e ){  

  8.     echo "Divide by zero, I don't fear you!".PHP_EOL;  

  9.     $result = 0;  

  10. }  //phpfensi.com 

  11.    

  12. restore_error_handler(); 


评论 (0)

发表评论