是什么$previous在Exception构造函数的参数分别表示?我该如何使用?
class MyException extends \Exception {
private $message;
private $code;
public function __construct($message,$code,\Exception $previous=null){
$this->message = $message;
$this->code = isset($code) ? $code : 0;
parent::__construct($message,$code,$previous);
}
}
Run Code Online (Sandbox Code Playgroud)
我没有在API文档中找到任何内容
如果由于捕获到异常而引发异常,则可以将原始异常添加为$previous。这意味着您实际上可以“嵌套”异常:
try {
throw new FooException('Foo exception');
} catch (FooException $e) {
$code = 1;
throw new BarException('Bar exception', $code, $e);
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以遍历异常“堆栈”,而不仅仅是捕获的异常,从而为您提供更多上下文。
while($e instanceof \Exception) {
echo $e->getMessage();
$e = $e->getPrevious();
}
Run Code Online (Sandbox Code Playgroud)
现在,如果您要实现一个可以引发异常的库,则可能会使用此方法,但是您希望将异常包装在自己的库中。这样,您客户的代码只需要知道您的异常,而无需了解代码依赖项所具有的异常,而不会丢失任何信息。
| 归档时间: |
|
| 查看次数: |
1696 次 |
| 最近记录: |