Мой сценарий:
Я использую шаблон Silverlight MVVM. Все мои модели представлений наследуются от класса BaseViewModel, который поддерживает некоторые базовые значения и поведение.
Одно из этих действий определяет, авторизован ли пользователь для использования определенных функций, и возвращает логическое значение.
Если функция не найдена, я хочу сгенерировать новое исключение и перехватить его в методе App.xaml Application_UnhandledException и вызвать собственное событие исключения, примерно так:
protected bool IsFunctionEnabled(string FunctionName)
{
//fetch the function / role
if (_FunctionRoles().ContainsValue(FunctionName))
{
KeyValuePair<int, string> kvp = _FunctionRoles().GetEntryByStringValue(FunctionName);
//determine if the user has been assigned to this role
return (_UserRoles().ContainsKey(kvp.Key));
}
//throw an exception when the function name is not located.
throw new Exception(string.Format(Constants.UNHANDLED_EXCEPTION, "security role assignment: '" + FunctionName + "' not located."));
}
Затем я хочу, чтобы это автоматически поднялось в App.XAML:
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
// throw this message to the main application exception event handler
ApplicationEvents.OnExceptionOccurred(this,
new ExceptionEventArgs(e.ExceptionObject,
null,
ExceptionImportance.Critical));
}
Моя проблема
Когда выдается исключение, оно не заполняется стеком. При отладке исключения повторяется снова и снова, никакой другой код не запускается.
Что я здесь не так делаю?
Спасибо,
Mark