• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php的错误处理,trycatch的问题

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

try catch是处理可以预知的错误,对于系统的fatal error无能为力,而且必须要通过throw 抛出异常才能捕获。

function inverse($x) {
    if (!$x) {
        throw new Exception('Division by zero.');
    }
    return 1/$x;
}

try {
    @inverse(0);
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
    exit;
}

通过@符号可以抑制错误的显示,或者使用error_report(0)。

对以其他的未知错误,比如内存溢出等,php也没有很好的解决办法,不过有一个函数可以有好提示。

function shutdown_function()  
{  
    $e = error_get_last();    
    print_r($e);  
}  
 
register_shutdown_function('shutdown_function');

new A;

这里由于A没有定义会报一个fatal error的错误。这个还是php程序执行玩的回调函数。我发现这个可以完成一个有趣的实验,实现程序报fatal错误继续运行的方法。

$star = 0;
function gg(){
    global $star;
    for($i=$star;$i<10;$i++){
        if($i == 5){
            echo "error".$i;
            new A;
        }
        echo $i;
        $star++;
    }
}
gg();
// Continue execution
echo 'Hello World';

执行结果是01234error5

但是改为

function shutdown_function()  
{  
    //$e = error_get_last();    
    //print_r($e);
    global $star;
    $star++;
    gg();
}  
 
register_shutdown_function('shutdown_function');

$star = 0;
function gg(){
    global $star;
    for($i=$star;$i<10;$i++){
        if($i == 5){
            echo "error".$i;
            new A;
        }
        echo $i;
        $star++;
    }
}
gg();
// Continue execution
echo 'Hello World';

运行结果就是01234error56789

神奇吧


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP通过地址获取经纬度【百度地图API】发布时间:2022-07-10
下一篇:
通过ctfshow学习php反序列化发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap