2012-12-22 2 views
1

변수 선언시 때때로 발생할 수있는 InvalidOperationException을 잡으려고합니다. 그러나 다음 코드는 작동하지 않습니다. 아마도 당신이 어떻게 예외를 잡는 지 정말로 모르거든요.빈 구조가있는 InvalidOperationException을 catch하십시오.

public override void Download() 
{ 
    try 
    {           
     var t = (ForumThread)Globals.Db.Thread.Get(_extIdForumThread, _idF);    
     try 
     { 
      throw new InvalidOperationException(); 
     } 
     catch (InvalidOperationException exception) 
     { 
      return; 
     } 
     catch (Exception exception) 
     { 
      throw; 
     } 
    } 
} 

아무런 도움이 필요하지 않습니다.

답변

5

직접 예외를 throw하지 않아도됩니다. 그냥이 :

try 
    {           
     var t = (ForumThread)Globals.Db.Thread.Get(_extIdForumThread, _idF); 
    } 
    catch (InvalidOperationException exception) 
    { 
     // Error logging, post processing etc. 
     return; 
    } 

당신은 정말 일반 예외를 캐치해야 하나 당신에게 정말 좋은 이유가 없다면 - 충돌 할 수없는 즉, 응용 프로그램을하지만, 당신이 경우에 당신이 그것을 복구 할 수 있어야합니다.

+0

대단히 감사합니다. 그건 내 질문을 해결합니다. 하지만 내 프로젝트 내에서 함수는 변수 t를 사용하고 try catch에서 선언 될 때 프로젝트를 컴파일 할 수 없다는 문제가 발생합니다. "현재 컨텍스트에는 이름이 없습니다." 어떻게해야합니까? – Niko

+0

@ AndréHegge - 변수't'를'try' 외부에서 사용하려면'try' 외부에서 선언해야합니다. 예외 처리기에서이를 참조하려고 시도하는 것이 현명하지 않을 수도 있지만 잘못 설정되거나 잘못된 값을 포함 할 수 있습니다. – ChrisF