내가 지원하는 응용 프로그램에서 오류 처리를 재 작업하고 단순화하는 방법을 찾고 있습니다. 우리는 현재 우리가 만든 모든 기본 클래스로부터 상속받은 모든 페이지를 가지며, 차례로 System.Web.UI.Page로부터 상속받습니다. 이 기본 클래스 내에서 OnError 메서드는 현재 재정의되고 MyBase.OnError를 호출 한 다음 사용자 지정 로깅 메서드 중 하나를 호출합니다.OnError를 재정의 할시기?
OnError 메서드를 재정의하는 데 도움이되지 않으며 Global.asax의 Application_Error 메서드가 처리되지 않은 예외 (로깅)를 처리 한 다음 customErrors 섹션을 다음과 같이 처리하도록하는 것이 좋습니다. config는 사용자를 리디렉션하는 프로세스를 트리거합니다.
사람이이 방법을 아주 자주 오버라이드하는 것처럼 보이지만 MSDN의 this 기사에서 나를 똑같이 생각하게 만듭니다.
그러나 : 또한
, 나는 당신의 질문의 일부가 아닌 건 알지만 나는 오류 로깅을위한 ELMAH 볼 것인가? 페이지 컨텍스트 내에서 정보를 처리해야하는 경우 해당 컨텍스트 (페이지, 사용자 입력, 화면에 메시지 표시 등의 특정 데이터 로깅)에서 오류를 처리하려는 이유가 무엇인지 이해하지만 왜 재정의 PageError 또는 Application_Error를 사용하는 대신 기존 OnError 메서드를 사용합니까? –
page_error는 onerror (OnLoad 메서드 등에서 Page_Load가 호출 됨)에서 비롯된 것이므로 OnError가 그 이유입니다. Page_Error와 동일합니다 ... 실제 질문은 왜 페이지 오류 대 앱 오류입니까? –
위 링크에서 "global.asax : Application_Error"절 위에있는 단락에서 코드를 OnError Override 메서드는 Page_Error를 사용하는 것과 동일하지 않습니다. 귀하의 경우에는 리디렉션하기 위해 해당 기능을 재정의한다고 가정합니다. 아마도 괜찮을 것입니다. 필자의 경우 OnError 메서드 내에서 그 기능을 실제로 오버라이드하고 있지는 않습니다. 우리는 던져진 예외에 대해 매우 일반적인 로깅을하고 있습니다. 우리는 어플리케이션 수준에서 로깅을 넣고 OnError 메서드를 제거 할 수 있다고 생각합니다. 귀하의 의견을 보내 주셔서 감사합니다. –