php类知识---try catch

<?php
try
{
    echo "比赛开始"."\n";
    throw new Exception('哇呀呀~运动员摔倒了'."\n",40);
}
catch (Exception $e )
{
    echo "获取错误信息:".$e->getMessage()."\n";
    echo "获取错误编码:".$e->getCode()."\n";
}
echo "哎呀比赛结束了"."\n";
?>

输出结果:

比赛开始
获取错误信息:哇呀呀~运动员摔倒了

  • 自定义异常类
<?php
//自定义异常
class MyException extends Exception   #自定义异常类继承自异常基类
{
    public function demo()
    {
        echo "快把运动员扶起来";
    }
}
try{
    echo "比赛开始"."\n";
    throw new MyException("哎呀运动员摔倒了",40);
}
catch(MyException $e)
{
    echo $e->getCode()."\n";
    echo $e->getMessage()."\n";
    echo $e->demo()."\n";  
}
echo "比赛结束"."\n";
?>

输出结果:

比赛开始
40
哎呀运动员摔倒了
快把运动员扶起来
比赛结束

  • 使用自定义myexception的重要原则
<?php


class myexception extends Exception { public function demo() { echo "快把运动员扶起来"."\n"; } } try{ echo "比赛开始"."\n"; throw new myexception('运动员被绊了一跤',20); #尽管抛出的是myexception,但是却被原生exception捕捉到了,所以自定义exception应该放在第一个! } catch (Exception $e) { echo $e->getMessage()."\n"; echo $e->getCode()."\n"; echo "上述是原生exception"."\n"; } catch ( myexception $e) { echo $e->getMessage()."\n"; echo $e->getCode()."\n"; echo $e->demo()."\n"; echo "上述是自定义myexception"."\n"; } ?>

输出结果:

比赛开始
运动员被绊了一跤
20
上述是原生exception

正确姿势:

<?php


class myexception extends Exception { public function demo() { echo "快把运动员扶起来"."\n"; } } try{ echo "比赛开始"."\n"; throw new myexception('运动员被绊了一跤',20); } catch ( myexception $e) { echo $e->getMessage()."\n"; echo $e->getCode()."\n"; echo $e->demo()."\n"; echo "上述是自定义myexception"."\n"; } catch (Exception $e) { echo $e->getMessage()."\n"; echo $e->getCode()."\n"; echo "上述是原生exception"."\n"; } ?>

输出结果:

比赛开始
运动员被绊了一跤
20
快把运动员扶起来

上述是自定义myexception

  • 特别函数set_exception_handler

 

<?php
function heichouxianwaA($mywords)
{
    echo $mywords->getMessage();
}
set_exception_handler('heichouxianwaA');
throw new Exception("我满心欢喜打开我的未来");
?>

 

posted @ 2019-06-03 00:54  saintdingtheGreat  阅读(214)  评论(0编辑  收藏  举报