Я вырыл себе дыру в проекте, над которым я работаю.У меня есть этот массивный проект (сотни тысяч строк), и везде есть ошибки MySQL.Я сейчас нахожусь в процессе их очистки.
У меня есть этот класс базы данных, через который проходят все запросы, поэтому я делаю так, что всякий раз, когда возникает ошибка SQL, я выкидываю исключение.Проблема в том, что я не могу остановить выполнение.Это должно продолжаться, как всегда, и просто регистрировать исключение, чтобы я мог отследить их и исправить их по одному.
Я надеялся, что set_exception_handler
будет делать то, что я хочу, но документы специальноскажем, это остановит выполнение после вызова моего обработчика.Так как мне обойти это?
Исключение может остановить текущую функцию, но затем я хочу, чтобы оно выпало из функции, возможно, возвратив ноль или ложь, а затем продолжилось как обычно, но мне это нужночтобы вызвать мой глобальный обработчик исключений.
Чтобы уточнить:
Я хочу вызвать исключение из моего класса базы данных (всякий раз, когда возникает ошибка SQL).Затем я хочу зарегистрировать эту ошибку и / или отобразить сообщение на экране, пока я не смогу либо исправить ошибку SQL, либо обернуть оскорбительную строку в try / catch.Я не хочу, чтобы это остановило казнь.Если я просто вызываю какую-то функцию error_handler()
, а не выбрасываю исключение, я не могу ее поймать.Если я поймаю его немедленно (также внутри класса DB), то я не смогу поймать его дальше по стеку (если я не переброшу его, но тогда мы вернемся к остановке выполнения).