2012-06-05 4 views
0

Я разработчик новичка .net mvc, и я хочу знать, есть ли способ разработать мой собственный обработчик ошибок, не используя знаменитую инструкцию try/catch. Я использую XML-файл для рендеринга компонентов в представлении, и я хочу, например, получить сообщение об ошибке, полезное для меня, чтобы узнать, что я нарушил ограничение на основе XML-файлаasp.net mvc обработка ошибок

(пример, если я добавлю другой тег без атрибута 'type', это может генерировать сообщение для меня во время выполнения). я надеюсь, что я заставляю себя ясно спасибо заранее,

ответ

0

На самом деле я предпочитаю использовать класс ActionFilter для переопределения метода OnActionExecuting, OnActionExecuted, OnResultExecuting и OnResultExecuted. И я думаю, что управление свойствами xml не может быть сделано с помощью c sharp, так что я буду использовать условие if для этого. Спасибо в любом случае

1

В Global.asax может поймать исключения, global.asax имеет множество обработчиков событий на вашем Aplication как Application_Start или что вам нужно Application_Error

void Application_Error(){ 

    Exception exception = Server.GetLastError(); 
    //do what you need with the exception... 
} 
0

Я считаю, что лучшее место для обработки исключений находится в global.asax.cs.

protected void Application_Error(object sender, System.EventArgs e) 
{ 
    // custom logger 
    IErrorLogger errorLogger = new CustomLogger(); 

    // config of error handler 
    MvcExceptionHandlerConfig config = new MvcExceptionHandlerConfig("Error", "Error", 404, 500); 

    // init and handle 
    new MvcExceptionHandler.MvcExceptionHandler(this, errorLogger, config).Handle(); 
} 

Демо можно посмотреть здесь: https://github.com/mholec/mvcexceptionhandler

Конечно, это зависит, какие исключения вы хотите обработать. Application_Error - отличное место для обработки ошибок 400, 404, 5xx и т. Д., С другой стороны, он не может использоваться для ошибок аутентификации (вам нужно создать специальный фильтр).