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