php自定义错误处理函数转化为异常抛出
PHP中文网
PHP中文网 2017-04-11 09:51:59
[PHP讨论组]

各位大神好,最近在处理异常的时候忽然想到一个问题,使用php自定义错误函数:
set_error_handle()自定义错误处理函数将错误转化为异常抛出,代码如下:

set_error_handle($error,$errstr,$errfile,$errline){
    throw new Exception($errstr,$errno,0,$errfile,$errline);
}

这里是php发生错误时,将会抛出一个异常.
问题是,异常的抛出不是要在try{}和catch{}代码块中进行吗,错误的发生并不能确定在代码的什么位置,总不能把所有的代码都写在一个try{}代码块中吧,所以想请教各位大神,是不是抛出异常的操作不需要在try{}中进行,而是在任何位置都可以冷不丁的抛出个异常然后catch(Exception $e){}呢?如果是的话,那写try的目的又是什么呢?

问题补充:
下面一个大神的回答也是我之前考虑的一个地方,我也想到自定义全局的异常处理函数,之所以这样问其实只是想知道是不是异常要在try中抛出,为什么自定义错误处理函数可以抛出异常而不通过try,在try中抛出异常和错误函数里抛出有什么区别,其实这些是最想知道的 ^-^,谢谢各位啦!

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
伊谢尔伦

还有一个函数叫set_exception_handler

PHPz

在异常被抛出时,php会尝试查找catch代码块捕获异常。而使用异常的函数应该位于 "try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。

你说无try是会直接语法错误,语法都是被规定的。至于设计的初衷是什么,可能是区分开使用异常函数的部分吧

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号