2013-04-26 6 views
1

내 첫 번째 질문은 여기에 try 블록이 C#에서 예외 내가 영어에서 위대한하지 않다 그래서 나와 함께 곰하시기 바랍니다다시 발생

나는 사용자가 '드라이버'와 인터페이스하는 스크립트를 작성할 수있는 응용 프로그램을 쓰고 있어요 , 스크립트 및 드라이버는 모두 별도의 클래스 라이브러리 DLL입니다. 이러한 클래스는 전달 된 콜백 대리자를 통해 통신하므로 컴파일시에는 연결되지 않습니다.

예 : (스크립트) -> ( 통신을 처리하는 프로그램) -> (드라이버)

지금 내 질문은 :

이 스크립트를 통해 방법을 실행하면 대리자가 예외를 throw하면 예외가 스크립트에 다시 표시되고 try-catch 블록에서 예외를 catch하면 사용자가 처리 할 수 ​​있습니다. 그렇지 않으면 예외가 내 프로그램에서 발견되어야합니다.

그것은이 같은 잘 작동하지만이 갈 수있는 올바른 방법 인 경우 나도 몰라 :

catch (Exception e) 
{ 
    Console.WriteLine("Script did not handle exception: " + e.Message); 
    return null; 
} 

스크립트는 결코 :

delegate object ScriptCallbackDelegate(string InstanceName, string MethodName, object[] Parameters); 

static private object ScriptCallbackMethod(string InstanceName, string MethodName, object[] Parameters) 
{ 
    try 
    { 
     return InterfaceWithDriver(InstanceName, MethodName, Parameters); 
    } 
    catch(Exception e) 
    { 
     try 
     { 
      throw; 
     } 
     catch 
     { 
      Console.WriteLine("Script did not handle exception: " + e.Message); 
      return null; 
     } 
    } 

} 
+0

이 [Link] (http://stackoverflow.com/questions/7890461/how-to-rethrow-a-prior-exception-from-inside-a-nested-try-catch-block)에서 답을 찾으십시오. -c), 여기에서 답을 찾길 바랍니다. 희망이 작동합니다. – Rahul

답변

3
catch (Exception e) 
{ 
    try 
    { 
     throw; 
    } 
    catch 
    { 
     Console.WriteLine("Script did not handle exception: " + e.Message); 
     return null; 
    } 
} 

가 의미와 동일하다 그 내부를보고 throw - 당신의 C# 코드에 의해 잡히고있다.

1

코드에서 발생한 예외로 인해 예외가 발생하지 않습니다 (예 : 다음과 비슷한 동작을 볼 수 있습니다.

------ C : \ abhi \ \ TryCatch.exe

Exeption 아무데도 가지 않았다 코드 \ CSHARP \ IDE없이

using System; 

namespace Code.Without.IDE 
{ 
    public static class TryCatch 
    { 
     public static void Main(string[] args) 
     { 
      try 
      { 
       try 
       { 
        throw new Exception("Ex01"); 
       } 
       catch(Exception ex) 
       { 
        try 
        { 
         throw; 
        } 
        catch 
        { 
         Console.WriteLine("Exeption did not go anywhere"); 
        } 
       } 
       Console.WriteLine("In try block"); 
      } 
      catch 
      { 
       Console.WriteLine("In catch block"); 
      } 
     } 
    } 
} 

출력 다음 생성

시도 블록에서

------ 프로세스가 반환되었습니다.

관련 문제