2017-02-19 1 views
1
static void Main(string[] args) 
     { 
      try 
      { 
       var intValue = "test"; 
       var test = Convert.ToInt32(intValue); 
      } 
      catch (FormatException) 
      { 
       Console.WriteLine("format exception"); 
       throw; 
      } 
      catch (Exception) 
      { 

      } 
      finally 
      { 
       Console.WriteLine("finally"); 
      } 
     } 

나를 따르면, 문자열에서 int로 변환하는 동안 FormatException이 발생합니다. 이제 catch 블록 내부에서 원래 예외가 다시 발생합니다. 왜 이것이 일반적인 예외 catch 블록에 잡히지 않았습니까? throw/catch를 넣으면 응용 프로그램이 충돌하지 않습니다.이 C# 코드가 프로세스를 중단시키는 이유는 무엇입니까?

답변

5

왜 일반 예외 catch 블록에 걸리지 않습니까?

일반 예외 블록 만 try 블록 내에서 발생하고 catch 블록에서 던진 예외를 캐치하지 않는 예외를 잡는다 때문입니다.

catch 블록에서 예외를 throw하려는 경우이를 처리하려면 호출 코드를 다른 try/catch로 래핑해야합니다.

관련 문제