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'),程式就正常运行了。

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

posted @ 2012-11-28 18:02  北海烧鸭  阅读(748)  评论(0编辑  收藏  举报