php异常处理 - 蜀都小一
程序员文章站
2022-06-12 18:45:53
...
使用try{thow}catch(){}异常处理结构,可以有效的控制多行可能发生异常的代码,基本模型如下:
php try { throw new Exception("错误信息";) //抛出一个错误 } catch(Exception $e) //捕获错误信息,Exception是一个内置的错误处理类 { echo $e->getMessage(); //输出错误信息 echo $e->getCode(); //返回异常代码 echo $e->getFile(); //返回发生异常的文件 echo $e->getLine(); //返回发生异常的行号 } ?>
Exception原形:
php class Exception { protected $message = 'Unknown exception'; // 异常信息 private $string; // __toString cache protected $code = 0; // 用户自定义异常代码 protected $file; // 发生异常的文件名 protected $line; // 发生异常的代码行号 private $trace; // backtrace private $previous; // previous exception if nested exception public function __construct($message = null, $code = 0, Exception $previous = null); final private function __clone(); // Inhibits cloning of exceptions. final public function getMessage(); // 返回异常信息 final public function getCode(); // 返回异常代码 final public function getFile(); // 返回发生异常的文件名 final public function getLine(); // 返回发生异常的代码行号 final public function getTrace(); // backtrace() 数组 final public function getPrevious(); // 之前的 exception final public function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息 public function __toString(); // 可输出的字符串 } ?>
同时,一个try也可以关联多个catch块,可以自定义类继承Exception类来实现
php class myException1 extends Exception{} //根据需要自定义 class myException2 extends Exception{} class myException3 extends Exception{} try{ switch(1){ case 1:throw new myException1(); case 2:throw new myException2(); case 3:throw new myException3(); //当找不到对应的catch代码块时,将会抛到Exception处理,因为myException3继承了Exception } } catch(myException1 $e){ echo "自定义错误1"; } catch(myException2 $e){ echo "自定义错误2"; } catch(Exception $e){ echo "原始异常类"; } ?>