2012-03-28 7 views
1

Как показано в документации php, вы можете создать свой собственный exception handler. Я рассматриваю это как разумный способ обработать мои пользовательские ошибки и исключения во всем проекте, над которым я работаю. Благодаря исследованиям я сделал достойный прогресс в реализации конкретного, только для одного класса, включая такие вещи, как использование ErrorException (из первого ответа) и вернувшийся false для error levels, с которым я не могу справиться.

Я, однако, столкнулся с стеной, сделав ее более общей. Я не хочу писать отдельный обработчик для каждого класса, который я пишу (особенно потому, что подавляющее большинство этого кода будет одинаковым для каждого). Тем не менее, кажется, что ужасно плохая практика имеет каждую ошибку для всего проекта в том же обработчике.

Ближайшим образом я пришел к тому, что кажется приемлемым решением для написания подкласса ErrorException для каждого класса, в котором я хочу обрабатывать ошибки и хранить сообщения в каждом из них. Но даже с этим я, вероятно, ошибаюсь (я не думаю, что это было бы подходящее место для хранения сообщений об ошибках по умолчанию).

Есть ли общепринятый способ сделать это, что я не смог найти? или является одним из этих способов на самом деле так, как это делается вообще? или есть несколько решений, которые масштабируются в зависимости от размера проекта?Как реализовать общий обработчик исключений php

EDIT: Только что понял, что я могу написать общий Exception_Handler с повторно используемым кодом и расширить его для каждого набора ошибок, которые у меня есть (реальный момент для меня), но все равно кажется, что я должен обрабатывать все ошибки в одном и том же месте , Если я полностью ошибаюсь, дайте мне знать.

EDIT 2: Решено перейти с конфигурационным файлом, содержащим сообщения об ошибках для каждого класса, которые будут вызывать ошибки, а затем имя класса, который выдает ошибку, определяет, какой файл конфигурации загружается, чтобы получить список сообщений, связанных с номер ошибки. Это также позволяет мне легко определять сообщения, которые должны регистрироваться, а не сообщения, которые должны быть отправлены пользователю (в основном конкретные или общие сообщения).

Думаю, я отмечу это как ответ или что-то в этом роде, но если я сделаю что-то неправильно, не стесняйтесь, дайте мне знать, помощь всегда ценится.

ответ

0

Решено перейти с конфигурационным файлом, содержащим сообщения об ошибках для каждого класса, которые будут вызывать ошибки, а затем имя класса, который выдает ошибку, определяет, какой файл конфигурации загружается, чтобы получить список сообщений, связанных с номером ошибки. Это также позволяет мне легко определять сообщения, которые должны регистрироваться, а не сообщения, которые должны быть отправлены пользователю (в основном конкретные или общие сообщения).

Более конкретно, я, вероятно, буду использовать файл ini, который определяет массив массивов, где каждый номер содержит массив сообщений об ошибках для этого номера ошибки. Затем используйте foreach с номерами сброшенных ошибок, чтобы вернуть сообщение (и) ошибки.

Смежные вопросы