|
|
系统自带的异常处理
- <?php
- //try分支 在这里进行代码测试,如果有问题就要抛出一个异常,如果没有问题就继续执行
- try{
- $num = 2;
- if($num == 1){
- echo "success";
- }else{
- //throw抛出异常对象
- //Exception类有两个参数
- //第一个参数:异常信息
- //第二个参数:异常代码
- throw new Exception("变量num不等于1");
- }
- //catch分支 就是捕捉异常对象
- //参数:异常对象,使用的是类型约束,只能捕捉由Exception类实例化来的对象
- }catch(Exception $e){
- echo "错误文件为:";
- echo $e -> getFile(); //得到发生异常的文件
- echo ",发生错误的行为:";
- echo $e -> getLine(); //得到发生异常的行
- echo ",错误代码为:";
- echo $e -> getCode(); //得到异常代码
- echo ",错误信息为:";
- echo $e -> getMessage(); //得到异常信息
- //echo $e;
- }
复制代码
自定义异常处理
- <?php
- //自定义异常类时要继承系统的异常处理类
- class myException extends Exception{
- //可以自已定义异常处理流程
- public function getAllInfo(){
- return "异常发生的文件为:{$this -> getFile()},异常发生的行为:{$this -> getLine()},异常的信息为:{$this->getMessage()},异常的代码为:{$this -> getCode()}";
- }
- }
- try{
- if($_GET['num'] == 5){
- throw new myException("这是一个自定义的异常",123456);
- }
- echo "success";
- //捕捉时注意类型约束为自已定义的异常处理类名
- }catch(myException $e){
- echo $e -> getAllInfo();
- }
复制代码
捕捉多个异常
- <?php
- class myException extends Exception{
-
- public function getInfo(){
- return $this -> getMessage();
- }
- }
- try{
- //捕捉多个异常处理要抛出多个异常对象,不能是由一个异常处理类实例化的对象
- if($_GET['num'] == 1){
- throw new myException("这是自定义的异常处理");
- }elseif($_GET['num'] == 2){
- throw new Exception("这是系统的异常处理");
- }
- echo "success";
- //在捕捉时系统的异常处理分支要放到最后
- //注意类型约束
- }catch(myException $e){
- echo $e -> getInfo();
- echo "111";
- }catch(Exception $e){
- echo $e -> getMessage();
- echo "222";
- }
复制代码
|
|