Fatal error: Exception thrown without a stack frame in Unknown on line 0

当你在php下用自定义错误处理程式替代系统默认的错误抛出程式时,很多时候会产生一个完全没有头绪的错误:

Fatal error: Exception thrown without a stack frame in Unknown on line 0

其实这个错误说明在你自定义的错误处理程式运行过程中产生了错误,就是说要处理的错误的脚本出错误了,然后php就不知道如何抛出这次的错误,因此就产生了上面的看不懂的错误。

比如我出错的时候,错误处理函数是这样写的

function error_handler($code, $error, $file = NULL, $line = NULL){
    throw new ErrorException($error, $code, 0, $file, $line);
}
function __404(Exception $e){
    echo $error = date("Y-m-d H:i:s ").$e->getMessage().' in '.$e->getFile().' line '.$e->getLine();
}
set_exception_handler('__404');
set_error_handler('error_handler');

当我注释掉set_exception_handler之后,能看到的错误是提示我没有设置timezone,然后我加了一句date_default_timezone_set('Asia/Shanghai'),程式就正常运行了。

出现这个错误的处理办法只有一个,确保你写的错误处理程式不会产生错误,或者把其中容易产生错误的语句去掉,宁愿缺少一些功能,也要保证不要出错,不然你又会看到上面那句然后浪费很多时间。

转载于:https://www.cnblogs.com/shaoya/archive/2012/11/28/2793145.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值