Re[12]: Обработка исключений контролов
От: cadet354 Россия
Дата: 26.07.06 04:57
Оценка:
Здравствуйте, kaer, Вы писали:

K>Здорово Теперь если не трудно объясните,

трудно и сейчас нет времени, shepard спрашивал как это происходит в dnn, я думаю, что ответил на его вопрос.
K> пожалуйста, мне что нужно дописать в метод Page_Error,
можно анализировать request, смотреть что вызвало postback, находить номер модуля, перегрузить построение страницы в dnn, и вместо контрола рейдить надпись.
K> чтобы вместо экрана с ошибкой отрендерилась обычная страница, как будто ничего не произошло, а на месте кнопки было "This control just crushed."
P.S.Обьясните, что это за религия, которая не позволяет обработку события в контроле делать с помощью следующего блока:
Try
    'тут ваш код
Catch exc As Exception   
    ProcessModuleLoadException(Me, exc)
End Try
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[13]: Обработка исключений контролов
От: kaer  
Дата: 26.07.06 09:11
Оценка:
Здравствуйте, cadet354, Вы писали:

C>Здравствуйте, kaer, Вы писали:


K>>Здорово Теперь если не трудно объясните,

C>трудно и сейчас нет времени, shepard спрашивал как это происходит в dnn, я думаю, что ответил на его вопрос.
K>> пожалуйста, мне что нужно дописать в метод Page_Error,
C>можно анализировать request, смотреть что вызвало postback, находить номер модуля, перегрузить построение страницы в dnn, и вместо контрола рейдить надпись.

Да, это вариант. Проблема только в том, что без этого контрола другой зависящий от него контрол может получить невалидное состояние, и придется делать еще один request — уже с новым отвалишимся контролом...
В результате имеем неочевидный движок, который сам может рухнуть не раз и который нужно хорошо отладить. Получаем ограничение в интерфейсе на как можно более независимые блоки (что не всегда возможно и часто просто вредно). А самое забавное, что мы имеем скорее всего абсолютно бесполезную для пользователя фичу — "экран развалился наполовину"

K>> чтобы вместо экрана с ошибкой отрендерилась обычная страница, как будто ничего не произошло, а на месте кнопки было "This control just crushed."

C>P.S.Обьясните, что это за религия, которая не позволяет обработку события в контроле делать с помощью следующего блока:
C>
C>Try
C>    'тут ваш код
C>Catch exc As Exception   
C>    ProcessModuleLoadException(Me, exc)
C>End Try
C>


Ничего не мешает Более того, все exception'ы, которые являются просто сообщениями для UI из более глубоких слоев — обязательно нужно поймать и корректно обработать. Но когда шлепнулось ХренЗнаетЧто типа System.Exception, то никакого дальнейшего рендеринга делать нафиг не надо — error page и все.
Цель программиста — исключить такие ситуации
Re[14]: Обработка исключений контролов
От: cadet354 Россия
Дата: 26.07.06 11:59
Оценка:
Здравствуйте, kaer, Вы писали:

K>Ничего не мешает Более того, все exception'ы, которые являются просто сообщениями

это как?
K> для UI из более глубоких слоев — обязательно нужно поймать и корректно обработать. Но когда шлепнулось ХренЗнаетЧто типа System.Exception, то никакого дальнейшего рендеринга делать нафиг не надо — error page и все.
хотелось бы увидеть пример вот этого ХренЗнаетЧто
ну так dnn делает рейдеринг на страницу с ошибкой если ты исключения не обрабатываешь
K>Цель программиста — исключить такие ситуации
согласен
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[15]: Обработка исключений контролов
От: kaer  
Дата: 26.07.06 12:50
Оценка:
Здравствуйте, cadet354, Вы писали:

C>Здравствуйте, kaer, Вы писали:


K>>Ничего не мешает Более того, все exception'ы, которые являются просто сообщениями

C>это как?

DataConstrainException — "Account with this login already registered"

K>> для UI из более глубоких слоев — обязательно нужно поймать и корректно обработать. Но когда шлепнулось ХренЗнаетЧто типа System.Exception, то никакого дальнейшего рендеринга делать нафиг не надо — error page и все.

C>хотелось бы увидеть пример вот этого ХренЗнаетЧто

NullRefenrenceException

C>ну так dnn делает рейдеринг на страницу с ошибкой если ты исключения не обрабатываешь


Правильно делают
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.