(на самом деле я использую Ektron CMS и использую Widgets
, которые являются очень простым расширением пользовательского элемента управления).
Проблема: у меня есть веб-страница, которая содержит много виджетов. Если в одном из этих виджетов возникает исключение, страница останавливается, и пользователю выдается ошибка сервера. Я хотел бы иметь необработанные исключения в виджете для регистрации исключения, остановки отображения этого виджета и разрешения продолжения страницы.
например. У вас есть виджет погоды на каждой странице, который получает данные через веб-сервис. Если веб-служба отправляет вам искаженный XML, вы хотели бы, чтобы сайт все еще был доступен.
Потенциальные решения:
План A) Внутри каждого виджета оберните содержимое функции init или display в оператор Try-Catch.
План Б) Создайте новый интерфейс IRobustWidget, который расширяет IWidget, и выполните там Try-Catch.
Обе эти опции кажутся мне немного «грязными», так как я читал, что общие операторы catch (exception)
являются чем-то вроде анти-паттерна. Я склоняюсь к Плану Б, так как он кажется более модульным.
- Я пропустил какие-либо другие варианты?
- Можно ли использовать в этом отношении универсальный Try-Catch?
(я также регистрировал это на форумах Ektron)