gpt4 book ai didi

php - 从 PHP Exception __destruct() 方法发送错误报告是好主意还是坏主意?

转载 作者:搜寻专家 更新时间:2023-10-31 21:17:43 24 4
gpt4 key购买 nike

我正在为我的应用程序设计一个错误处理系统。我想以异常为基础,并且我想通过电子邮件收到有关我没有预料到的每个异常的通知。

我想到了一个类:

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.如果您捕获到异常然后改变主意并希望将异常留给异常处理程序(就像您在示例中所做的那样,在分析错误代码时),您可以随时重新抛出异常。当然,更好的选择是将异常子类化而不是依赖于错误代码。

关于php - 从 PHP Exception __destruct() 方法发送错误报告是好主意还是坏主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5002754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com