我想捕获一个自定义异常,对其执行一些逻辑,如果失败,则将其抛入更通用的catch块。像这样:抛出下一个捕获块的例外
class My_Exception extends Exception {
protected $_nonFatal = false;
public function __construct($value, $nonFatal = false) {
$this->_nonFatal = (bool)$nonFatal;
return parent::__construct($value);
}
public function isNonFatal() {
return (bool)$this->_nonFatal;
}
}
try {
} catch (My_Exception $e) {
if ($e->isNonFatal) {
// #1
// Err gently
}
// #2
// The error was fatal, so keep throwing it
throw new Exception($e->getMessage());
} catch (Exception $e) {
// #3
echo 'An exception was caught with the message '.$e->getMessage();
}
所以我赶上My_Exception
,检查,看它是否是一个非致命错误。如果是这样,请轻轻地,(第一节)。如果没有(第2节),我希望触发第二次捕获(第3节)。相反,第2节中的throw new Exception
将try/catch/catch
全部保留在一起。
我可以在类$e
上使用switch语句,但我认为这样更加混乱。有没有一个标准的方法来做到这一点,我错过了?