Я разрабатываю систему обработки ошибок для своего приложения.
Я хочу основывать это на исключениях и хочу получать уведомления по электронной почте о каждом исключении, которое я не ожидал.
Я думал о классе:
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 хорошим способом для достижения этой цели?
Есть ли лучший способ, которым я мог бы достичь этого?