我正在为我的应用程序设计一个错误处理系统。
我想将其基于异常,并且我希望通过电子邮件收到有关我没有预料到的每个异常的通知。
我想到了一个类:
class My_Exception extends Exception {
private $sendErrorReport = true;
public function __destruct() {
if ($this->sendErrorReport) {
// send the error report by email
}
}
public function cancelErrorReport() {
$this->sendErrorReport = false;
}
}
我想做这样的事情:
try {
do_something_that_can_throw_exception();
catch (My_Exception $e) {
if ($e->getCode() == I_KNOW_WHAT_TO_DO ) {
react_to_exception();
$e->cancelErrorReport();
} else {
show_error_message($e->getMessage());
}
}
所以,基本上,当异常发生时,系统知道该怎么做,作为开发人员,它不会打扰我。但是当系统无法处理某些事情时,我就会收到通知。
我不想将通知我的代码放在 catch 子句中,因为我确信我会忘记它......
我可以确定异常 __destuct 方法会被调用吗?
异常的__destruct方法是实现这个目标的好方法吗?
我有更好的方法可以实现这一目标吗?
不,这不是一个好主意。
最好的选择是替换未处理的异常处理程序。看set_exception_handler. http://php.net/set_exception_handler如果您捕获异常,然后改变主意并希望将异常留给异常处理程序(就像您在示例中分析错误代码时所做的那样),您始终可以重新抛出异常。当然,更好的选择是对异常进行子类化,而不是依赖错误代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)