PHP中的异常处理

一下内容纯属于个人笔记

PHP中的异常处理(在没有关闭php.ini中的错误提示下)

在PHP中异常和错误是不一样的,异常是出现正常逻辑之外的情况,而错误是指运行时出错了,比如调用了一个没有定义的东东!

通常可以使用   

try{

}catch(Exception $e){

echo $e->getMessage();

}

但是,这里并不是所有的异常和错误都能够捕获到的,这里仅仅可以来捕捉有throw抛出的异常,所以如果没有设置自定义的异常处理,假设直接使用以上那个,是解决不了警告或者致命错误的,例如,我需要读取某一个目录下的所有文件及目录

try{

        if($handle = opendir("/home")) { while($file=readdir($handle)){} }catch(Exception $e){}

在这里会出现相应的警告Warning: opendir(/home/huyouheng/.gnupg): failed to open dir: Permission denied in/home/huyouheng/workspace/php/pdo/File.php,权限拒绝

所以在这里自定义一个处理异常的方法

function myErrorHandler(){                                                                                                                                           throw new Exception("文件打开失败", 0);                                                                         }

这里很简单的定义了一个抛出异常的方法,然后用函数set_error_handler($this->myErrorHandler()); 或者用set_exception_handler来设置处理错误的方法,这个函数一定要放在你的try里面,不然没有用

try{                                                                                                                                                                        set_error_handler($this->myErrorHandler());                                                                                            $handle = opendir($p);                                                                                                                               while($file=readdir($handler)){}                                                                                                                //............                                                                                                                                           }catch(Exception $e){ echo $e->getMessage();}  

这样的话就会走你自定义异常方法,在捕获到做相应的处理!一定要被捕获到,否则也会报错,方法很多种,自己根据需求进行!

HP7实现了一个全局的throwable接口,于是,PHP7中更多的Error变为可捕获的Exception返回给开发者,如果不进行捕获则为Error,如果捕获就变为一个可在程序内处理的Exception。这些可被捕获的Error通常都是不会对程序造成致命伤害的Error,比如未定义的东西!

参考文献:http://php.net/manual/zh/class.exception.php

你可能感兴趣的:(PHP中的异常处理)