码迷,mamicode.com
首页 > Web开发 > 详细

PHP 错误与异常 笔记与总结(17 )像处理异常一样处理 PHP 错误

时间:2015-07-06 06:38:58      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

有两种方式可以在 PHP 中以异常的方式处理错误:

① PHP 内置的 ErrorException 类(也是 Exception 类的子类)

 1 <?php
 2 function exception_error_handler($errno, $errstr, $errfile, $errline){
 3     throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
 4 }
 5 
 6 set_error_handler(‘exception_error_handler‘);
 7 
 8 try{
 9     //出发异常
10     echo gettype();
11 }catch(Exception $e){
12     echo $e->getMessage();
13 }

输出:

技术分享

用过这种方式把警告信息以异常信息输出出来了。

 

 

自定义异常类来处理 PHP 中的错误 

 1 <?php
 2 class ErrorToException extends Exception{
 3     public static function handler($errno, $errstr){
 4         throw new self($errstr, $errno);
 5     }
 6 }
 7 
 8 set_error_handler(array(‘ErrorToException‘, ‘handler‘));
 9 
10 try{
11     //触发错误,未定义的变量,产生通知级别的错误
12     echo $test;
13 }catch(ErrorToException $e){
14     echo $e->getMessage();
15 }

输出:

技术分享

 

还可以使用 set_error_handler 设定错误级别:

 1 <?php
 2 class ErrorToException extends Exception{
 3     public static function handler($errno, $errstr){
 4         throw new self($errstr, $errno);
 5     }
 6 }
 7 
 8 set_error_handler(array(‘ErrorToException‘, ‘handler‘));
 9 //设定错误级别,例如只有警告级别的错误才以异常的形式进行捕获
10 set_error_handler(array(‘ErrorToException‘, ‘handler‘), E_USER_WARNING|E_WARNING);
11 
12 try{
13     //触发错误,未定义的变量,产生通知级别的错误
14     echo $test;
15 }catch(ErrorToException $e){
16     echo $e->getMessage();
17 }

输出:

技术分享

也就是说,通知级别的错误不交给自定义异常类来处理。

 

trigger_error 也能触发异常:

 1 <?php
 2 header(‘content-type:text/html; charset=utf-8‘);
 3 
 4 class ErrorToException extends Exception{
 5     public static function handler($errno, $errstr){
 6         throw new self($errstr, $errno);
 7     }
 8 }
 9 
10 set_error_handler(array(‘ErrorToException‘, ‘handler‘));
11 //设定错误级别,例如至哟哟警告级别的错误才以异常的形式进行捕获
12 set_error_handler(array(‘ErrorToException‘, ‘handler‘), E_USER_WARNING|E_WARNING);
13 
14 try{
15     //触发错误,未定义的变量,产生通知级别的错误
16     echo $test;
17     echo ‘<hr>‘;
18     //gettype();
19     echo ‘<hr>‘;
20     trigger_error(‘test‘, E_USER_WARNING);
21 }catch(ErrorToException $e){
22     echo ‘异常‘;
23     echo $e->getMessage();
24 }

输出:

技术分享

 

PHP 错误与异常 笔记与总结(17 )像处理异常一样处理 PHP 错误

标签:

原文地址:http://www.cnblogs.com/dee0912/p/4623379.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!