Проектирование дизайна приложения (обработка ошибок)

sgrebnev

Новичок
Проектирование дизайна приложения (обработка ошибок)

Впрос в том, как, с точки зрения проектирования, поступить при возникновении разного типа ошибок: пользовательские (не корректные данные), программные(вызвана не существующая функция). Здесь я НЕ имею ввиду, обработку ошибок с помощью исключений или других тех средств, а говорю о логике обработке ошибок, универсальных шаблонах так сказать (например во фреймворке). Я имею ввиду следующее:

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

Варианты 1 и 3 имеют ошибки разных типов, поэтому не могут быть взаимозаменяемыми. а вот как 1 так и 3 можно заменить 2.

Получается вопрос таким: какие типы ошибок бывают, как их правильно обрабатывать как не правильно, в данном контексте.
 

phpdev2007

Новичок
sgrebnev
в php есть возможность писать свои обработчики ошибок, и свои обработчики исключительных ситуаций, вот от этого и отталкивайтесь.
 

Фанат

oncle terrible
Команда форума
самый юзер-френдли вариант - 2.
вот только с сессией заморочиваться имеет смысл только при обработке POST.
во всех остальных случаях здать "следующего запроса", вообще-то, бессмысленно.
 

sgrebnev

Новичок
дело не в том что можно написать функции обработки исключений, а в том какими эти функции должны быть.
Я думаю что на самом деле вариантов здесь не так уж много
 

sgrebnev

Новичок
ну я в первом посте написал, такого характера варианты я имею ввиду
 

Фанат

oncle terrible
Команда форума
что-то из моего ответа неясно?
Первые два имеют равные права на существование.
Если ошибка при запросе гетом, то шаблон выводит сообщение об ошибке и завершает приложение.
Если ошибка при запросе постом, то любой из первых двух.
третий - вообще не вариант.
Вопросы остались?
Если да - то почему бы их не озвучить?
 

sgrebnev

Новичок
возможно это очевидно, но вопрос все же возник
почему ошибку в запросе, переданным гетом, нельзя обработать первыми двумя вариантами, а нужно завершать приложение?
 

phpdev2007

Новичок
sgrebnev
Вы сначала прежде чем описывать действия на ошибки или варианты обработок ошибок, определитесь что есть для вашего приложения ошибка? какие могут быть ошибки, а ваш вариант с сессией просто не нужен, зачем ждать другого вызова если можно вывести ошибку в текущем запросе?
 
Сверху