2011-12-09 2 views
1

오류 처리가 나타납니다.MVC에서 어떤 종류의 응용 프로그램 오류가 발생합니까?

protected void Application_Error(object sender, EventArgs e) 
    { 
     var exception = this.Server.GetLastError(); 

     this.Response.Clear(); 
     this.Server.ClearError(); 

     var errorRoute = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current)); 
     var tenant = errorRoute.Values["tenant"].ToString(); 

     var route = new RouteValueDictionary 
     { 
      { "controller", "Error" }, 
      { "action", "Index" }, 
      { "tenant", tenant } 
     }; 

     if (exception != null) 
     { 
      route.Add("message", exception.Message); 
     } 

     this.Response.RedirectToRoute(route); 
    } 

그러나 무엇함으로써 Application_Error가 발생할 수 있습니다 나는 다음과 같은 코드를 발견? 데이터베이스에 중복 항목이 있거나 일부 시스템 예외가 발생한 것과 같이 사용자가 생성 한 내용일까요?

+0

내 대답은 도움이 되었습니까? –

+0

누군가의 답변이 귀하의 질문에 답변 한 경우 [답변] (http://meta.stackexchange.com/a/5235/171243) 옆의 체크 표시를 반드시 클릭하십시오. –

답변

3

메서드는 응용 프로그램이 throw하는 모든 예외를 처리합니다.

if(entriesDuplicated) 
{ 
    throw new Exception("The message that describes the error"); 
} 

그것은 Application_Error 방법으로 처리됩니다 : 당신은 중복 항목과 같은 사용자 정의 상황을 처리하려는 경우, 당신은이 같은 예외를 던질 수 있습니다.

4

@cebirci 님이 귀하의 질문에 답변했습니다. 그러나 MVC에서 오류를 처리하는 방법이 내장되어 있기 때문에 MVC에서 Application_Error을 사용하지 않는 것이 좋습니다.

우선 컨트롤러 및/또는 액션을 장식 할 수있는 [HandleError] 속성이 있습니다. 처리되지 않은 예외가 잡힐 때마다보기 Shared\Error.cshtml을 렌더링합니다.

[HandleError]의 문제점은 Not Found (404)를 처리 할 수 ​​없다는 것입니다. 404를 처리하려면 오류 컨트롤러를 만들고 web.config에서 customErrors를 구성해야합니다.

my blog에 자세히 설명되어 있습니다.

관련 문제