sgrebnev
Новичок
Проектирование дизайна приложения (обработка ошибок)
Впрос в том, как, с точки зрения проектирования, поступить при возникновении разного типа ошибок: пользовательские (не корректные данные), программные(вызвана не существующая функция). Здесь я НЕ имею ввиду, обработку ошибок с помощью исключений или других тех средств, а говорю о логике обработке ошибок, универсальных шаблонах так сказать (например во фреймворке). Я имею ввиду следующее:
1 вариант. Имеется главный шаблон view в котором есть блок вывода ошибок и подключаемый блок, зависящий от выполняемого действия. Есть класс управления списком. Имеет методы viewLict (выводит весь список), viewEdit (выводит значения элемента списка), saveEdit (сохраняет значения отредактированного элемента). В методе saveEdit перед записью (в базу), проверям переданные значения. Если ошибка - заносим в глобальный массив (кт. выводится в шаблоне) и вызываем viewEdit, если нет ошибки, записываем в бд, вызываем viewList.
2 вариант. На конечном этапе выполнения скрипта, например в __destruct класса ядра приложения, в session записываются параметры текущего запроса. При обработке следующего запроса и выявлении ошибки: записываем ошибки в глобальный массив и вызываем метод error из ядра приложения, который на основании данных последнего запроса вызывает соответствующие модули и выводит их результат и сообщения о ошибке. В место выполнения модулей предидущего запроса, можно использовать результат из кэша, сформированный и сохраненый во время предидущего выполнения скрипта.
3 вариант с fatal error - выводим ошибки и завершаем приложение.
Варианты 1 и 3 имеют ошибки разных типов, поэтому не могут быть взаимозаменяемыми. а вот как 1 так и 3 можно заменить 2.
Получается вопрос таким: какие типы ошибок бывают, как их правильно обрабатывать как не правильно, в данном контексте.
Впрос в том, как, с точки зрения проектирования, поступить при возникновении разного типа ошибок: пользовательские (не корректные данные), программные(вызвана не существующая функция). Здесь я НЕ имею ввиду, обработку ошибок с помощью исключений или других тех средств, а говорю о логике обработке ошибок, универсальных шаблонах так сказать (например во фреймворке). Я имею ввиду следующее:
1 вариант. Имеется главный шаблон view в котором есть блок вывода ошибок и подключаемый блок, зависящий от выполняемого действия. Есть класс управления списком. Имеет методы viewLict (выводит весь список), viewEdit (выводит значения элемента списка), saveEdit (сохраняет значения отредактированного элемента). В методе saveEdit перед записью (в базу), проверям переданные значения. Если ошибка - заносим в глобальный массив (кт. выводится в шаблоне) и вызываем viewEdit, если нет ошибки, записываем в бд, вызываем viewList.
2 вариант. На конечном этапе выполнения скрипта, например в __destruct класса ядра приложения, в session записываются параметры текущего запроса. При обработке следующего запроса и выявлении ошибки: записываем ошибки в глобальный массив и вызываем метод error из ядра приложения, который на основании данных последнего запроса вызывает соответствующие модули и выводит их результат и сообщения о ошибке. В место выполнения модулей предидущего запроса, можно использовать результат из кэша, сформированный и сохраненый во время предидущего выполнения скрипта.
3 вариант с fatal error - выводим ошибки и завершаем приложение.
Варианты 1 и 3 имеют ошибки разных типов, поэтому не могут быть взаимозаменяемыми. а вот как 1 так и 3 можно заменить 2.
Получается вопрос таким: какие типы ошибок бывают, как их правильно обрабатывать как не правильно, в данном контексте.