2013-07-26 1 views
4

클래스 라이브러리의 모든 메서드 내에서 throw 된 모든 예외에 대한 예외를 catch하고 처리하는 방법이 있습니까?C# 클래스 라이브러리의 전역 오류 처리기

아래 예제 코드에서와 같이 각 메서드 내에서 try catch 구문을 사용할 수 있지만 클래스 라이브러리에 대한 전역 오류 처리기를 찾고있었습니다. 라이브러리는 ASP.Net 또는 Winforms 앱 또는 다른 클래스 라이브러리에서 사용할 수 있습니다.

이점은 개발이 쉬우 며 각 방법 내에서 동일한 작업을 반복해서 수행 할 필요가 없습니다.

public void RegisterEmployee(int employeeId) 
{ 
    try 
    { 
    .... 
    } 
    catch(Exception ex) 
    { 
    ABC.Logger.Log(ex); 
    throw; 
    } 
} 
+0

당신은 그러나 당신이있는 경우에만, 당신은 몇 가지 샘플 코드를 공유 할 수 ContextBoundObject –

+0

를 사용할 수 있습니까? 감사합니다 – Sunil

답변

4

당신은 AppDomain.UnhandledException 같은 글로벌 이벤트 핸들러에 가입 던졌습니다 방법을 확인할 수 있습니다 예외 :

AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException; 

private static void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs unhandledExceptionEventArgs) 
{ 
    var exceptionObject = unhandledExceptionEventArgs.ExceptionObject as Exception; 
    if (exceptionObject == null) return; 
    var assembly = exceptionObject.TargetSite.DeclaringType.Assembly; 
    if (assembly == //your code) 
    { 
     //Do something 
    } 
} 
+0

그냥 호기심. 이것은 exceptionObject.TargetSite.DeclaringType.Assembly를 가져올 때 반사를 포함합니까? – Sunil

+0

'TargetSite' 속성은 현재 예외를 던지는'MethodBase' 타입의 메쏘드를 반환합니다. 'MethodBase' 타입은 리플렉션 라이브러리의 일부이며 리플렉션이 사용됩니다. –