加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP中的异常处理

发布时间:2023-01-10 09:32:18 所属栏目:PHP教程 来源:网络
导读: 一下内容纯属于个人笔记
PHP中的异常处理(在没有关闭php.ini中的错误提示下)
在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接口,于是PHP异常处理,PHP7中更多的Error变为可捕获的Exception返回给开发者,如果不进行捕获则为Error,如果捕获就变为一个可在程序内处理的Exception。这些可被捕获的Error通常都是不会对程序造成致命伤害的Error,比如未定义的东西!

参考文献:

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!