2011-10-19 7 views
1

이상한 질문 일 수도 있지만 응용 프로그램의 특정 어셈블리에서만 처리되지 않은 예외를 처리하는 방법은 어떻게됩니까 (예 : ADO를 얻을 때와 같이 .NET 자체에서 발생한 예외 포함). . NET 어셈블리에서 시작된 .NET 예외입니다.특정 어셈블리에서만 처리되지 않은 예외 처리

여러 어셈블리로 구성된 모듈에 대해서만 처리되지 않은 예외 처리가 필요하고 모든 것이 동일한 프로세스의 일부로 결국 같은 응용 프로그램에 있기 때문에 레거시 응용 프로그램을 사용해야하기 때문에이 기능이 필요합니다.

어쩌면 글로벌 응용 프로그램 수준에서 어셈블리 수준에서 예외를 catch 할 수 있습니까?

+0

데니스 : 당신은 아직도 기다리고있는 당신에게 도움이 아래 답변 중 하나가되어 있었다 은 총알? –

답변

2

예외를 처리하지 않으려면 스택 추적을 확인하고 throw;을 사용하십시오.

try 
{ 
    //something 
} 
catch (Exception err) 
{ 
    if (!err.StackTrace.Contains("YourAssemblyName")) 
     throw; 
} 
+0

그래, 이것도 생각해 봤지만 stacktrace에는 폴더 이름도 포함되어 있고 어떤 폴더의 이름이 어셈블리와 같은 경우 –

+0

''YourAssemblyName ''과 같은 공백을 포함합니다. – jgauffin

+1

죄송 합니다만이 경우 우주가 어떻게 도움이 될지 설명해 주시겠습니까? –

-1
당신은 처음부터 쓸 수

하지만 http://code.google.com/p/elmah/는 처리되지 않은 예외를 처리하기위한 좋은 프레임 워크입니다!

그런 다음 http://code.google.com/p/elmah/wiki/ErrorFiltering을 사용하여 리플렉션을 사용하여 어셈블리 당 필터링 할 수 있습니다.

+0

태그 참조 : "winforms". –

+0

oops! 내 잘못이야! 메모를 게시하기 전에 모든 태그를 읽으십시오 :) –

0

당연히 분리하려는 어셈블리에 대한 호출 수를 알 수 없으므로 이것이 가능한지는 잘 모르겠지만 내게는 말하고있는 모듈 주위에 외관을 만드는 것처럼 보입니다. 에 대한 적절한 것입니다.

facade는 이러한 특정 어셈블리에서 발생하는 예외를 catch하고 원본 예외가있는 InnerException 인 사용자 지정 예외를 되돌릴 수 있습니다. 사용자 지정 예외는 전역 예외 처리기에서 쉽게 인식 할 수 있습니다.

1

아니요,하지만 AppDomain 수준에서 잡을 수는 있습니다.

  • 그것에서 새로운 AppDomain

  • Load 또는 execute 관련 어셈블리 만들기 : 수정 관련이 경우 응용 프로그램에서하려고합니다.

  • Catch

편집 도메인의 처리되지 않은 예외 : 그냥 호기심

 AppDomain otherAppDomain = AppDomain.CreateDomain("myDomain"); 
     otherAppDomain.UnhandledException += new UnhandledExceptionEventHandler(otherAppDomain_UnhandledException); 
     Assembly assembly = otherAppDomain.Load("TheAssemblyThatThrows"); 
     // But you might need to have MyClass inherit from MarshalByRefObject 
     MyClass instance = (MyClass)otherAppDomain.CreateInstanceAndUnwrap("TheAssemblyThatThrows", "MyClass"); 
     instance.DoSomething();