2012-02-09 4 views
-1

언어 : C#스레드 내에서 예외를 처리 할 수 ​​없습니다.

저는 장시간 작업을하기 위해 백그라운드 작업자를 사용합니다. 나는 무시해야만하는 예외를 보게된다. 코드 블록에서 예외를 처리하면 블록 자체에서 예외가 발생하지 않습니다. 그 대신에 내가 붙잡힌 곳에서 내가 배경 지식 노동자의 일을 부른 곳.

문제 상황

Backgroundworker1_dowork() 
    { 
     try 
     { 
     fun1(); 
     } 
     catch(Exception e) 
     { 
     console.writeline("bg block"); 
     } 
    } 
    void fun1() 
    { 
    try 
     { 
      throw new exception("ex1"); 
     } 
    catch(Exception ex) 
     { 
      Console.writeline("code block"); 
     } 
    } 

    output: bg block Expected: code block 

이 하나가 나를 도울 수 ...

+2

어떤 코드가이 동작을 생성하는지 보지 못한 채로 ... –

+1

예제 코드를 게시하십시오. –

+0

fun1()을 실행하거나 fun1()을 건너 뛰기 전에 Backgroundworker1_dowork()에 예외가 발생한다고 생각합니다. 예외의 호출 스택을 참조하십시오. – evpo

답변

0

이 문제를 결정하기 어렵다 있도록, 컴파일되지 않습니다 제공하는 코드입니다. 그러나 fun1에 대한 호출이 실패하거나 fun1의 catch 블록이 실패합니다.

fun1을 시도하기 전에 Debug.WriteLine("In fun1");을 넣겠습니다. 출력에 이것이 보이지 않으면 fun1에 대한 호출이 실패한 것입니다. 이 출력을 보면 catch 블록이 실패했음을 알 수 있습니다.

관련 문제