'ASP.NET MVC'에 해당되는 글 1건

  1. 2010.02.14 Error Handling

Error Handling

개발/jQuery 2010. 2. 14. 17:43

jQuery ASP.NET MVC 액션 메소드에서 Error Handling에 대해서 검색을 해보았습니다.
먼저 jQuery에서는 아래의 사이트처럼 처리하였습니다.

http://www.maheshchari.com/jquery-ajax-error-handling/

$().ready(function(){

      $.ajaxSetup({

            error:function(x,e){

                  if(x.status==0){

                  alert('You are offline!!\n Please Check Your Network.');

                  }else if(x.status==404){

                  alert('Requested URL not found.');

                  }else if(x.status==500){

                  alert('Internel Server Error.');

                  }else if(e=='parsererror'){

                  alert('Error.\nParsing JSON Request failed.');

                  }else if(e=='timeout'){

                  alert('Request Time out.');

                  }else {

                  alert('Unknow Error.\n'+x.responseText);

                  }

            }

      });

});

=> ajaxSetup()이라는 jQuery함수가 있네요. error State에 따라서 if문으로 필터를 해주네요한 가지 주의하실 점은 직접 $.ajax()를 호출해줄 경우에 error처리를 해주면 ajaxSetup에서 설정한 error처리 루틴은 실행되지 않는다는 것입니다.


서버쪽 액션 메소드에서는 아래의 사이트처럼 처리해주었습니다.

http://blog.dantup.com/2009/04/aspnet-mvc-handleerror-attribute-custom.html

 

 

protected override void OnException(ExceptionContext filterContext)

{ 

// Error Handle : ex) Log

 

filterContext.ExceptionHandled = true;

this.View("Error").ExecuteResult(this.ControllerContext);

}

=> Controller OnExeption메소드를 override해서 Exception true로 변경해주고 예외 발생시에 보여줘야 할 페이지와 ControllerContext ExcuteResult()에 매개변수로 넘겨주는 것을 볼 수 있습니다. ErrorHandle Attribute를 사용할 수도 있는데 제가 생각했던대로 동작하지 않았고 OnException메소드에서 모든 예외를 한꺼번에 처리하는 방법이 구조상 심플해보입니다.

 

클라이언트에서는 AjaxSetup로 서버쪽에서는 OnException메소드에서 Error를 처리해줍니다. 그런데 클라이언트에서 Ajax호출시에 서버쪽 액션 메소드에서 예외가 발생하는 경우 서버쪽에서 OnExcption에서 Error 처리해주는 로직이 수행되고나면 클라이언트의 Error의 상태가 변경되는 문제점이 있었습니다. 그렇게 크게 문제가 되지는 않는다는 생각과 일단은 상태가 변경되는 부분에 주석을 걸어주고 Unknow Error쪽의 루틴이 실행되도록 변경하였습니다.

 

 

Posted by resisa
,