🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 扩展异常处理类 用户可以用自定义的异常处理类来扩展 PHP 内置的异常处理类。 内置异常处理类基本结构: ``` <?php class Exception { protected $message = 'Unknown exception'; // 异常信息 protected $code = 0; // 用户自定义异常代码 protected $file; // 发生异常的文件名 protected $line; // 发生异常的代码行号 private $trace; // backtrace private $previous; // previous exception if nested exception private $string; // __toString cache 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() 信息 // Overrideable public function __toString(); // 可输出的字符串 } ?> ``` PHP 内置的异常处理类 * BadFunctionCallException * BadMethodCallException * DomainException * InvalidArgumentException * LengthException * LogicException * OutOfBoundsException * OutOfRangeException * OverflowException * RangeException * RuntimeException * UnderflowException * UnexpectedValueException 详情请参考:[PHP内置异常处理类](http://php.net/manual/zh/spl.exceptions.php) 扩展异常处理类示例: ``` <?php class MyException extends Exception { } try { throw new MyException('MyException'); } catch(MyException $e) { echo $e->getMessage() . PHP_EOL; } ?> ``` 扩展异常处理类示例: ``` <?php class MyException extends Exception { public function __construct($message, $code = 0) { parent::__construct($message, $code); } public function __toString() { return __CLASS__ . ": [{$this->code}]: {$this->message}" . PHP_EOL; } public function custom() { echo "A custom function for MyException" . PHP_EOL; } } try { throw new MyException('MyException'); } catch(MyException $e) { echo $e->getMessage() . PHP_EOL; } ?> ```