Каков предлагаемый способ отображения сообщений об исключениях в пользовательском интерфейсе, созданных в бизнес-уровне? - PullRequest
1 голос
/ 04 мая 2010

Существует ли шаблон ИЛИ "наилучшая практика" для создания дружественных для пользователя сообщений на уровне представления с использованием исключений, которые были выброшены из бизнес-уровня?

На самом деле во многих случаях я предпочитаю генерировать исключения приложений, и это заставляет меня ловить их в пользовательском интерфейсе (страницы aspx.cs). И если процесс сложный, который может привести к множеству различных типов исключений, мне нужно иметь много блоков catch для создания определенных сообщений об ошибках.

Есть ли лучший способ прийти к вам на ум? Шаблон может быть для подобных случаев?

спасибо

Ответы [ 2 ]

2 голосов
/ 04 мая 2010

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

Второе: существует возможность отловить исключения во всем мире:

public static void RegisterExceptionHandler()
{
    Application.ThreadException += new System.Threading.ThreadExceptionEventHandler    (Application_UIThreadException);
    Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}

В этих методах обработки исключений перехвачены все исключения, которые не были обработаны. Здесь вы можете уведомить пользователя о том, что произошло нечто «неожиданное».

0 голосов
/ 04 мая 2010

Вы можете использовать пользовательский класс исключений для возврата ошибок через исключение на уровень пользовательского интерфейса. Эти пользовательские исключения могут содержать сообщение об ошибке, которое будет значимым для пользователя, поэтому вы можете отобразить его так же, как и любое другое сообщение об ошибке.

Таким образом, вам потребуется только один обработчик исключений в пользовательском интерфейсе, а не много для каждого типа ошибки ...

...