2011-02-11 2 views
0

나는 MSDN에서 try/finally에 대해 읽었으며 다음 코드를 발견했습니다. 그들은 Finally 절을 실행할 것이라고 말하지만, 실행하면 계속되지 않고 실행되지 않습니다. 문제가 무엇입니까?MSDN의 예제가 작동하지 않습니다. try/finally

public class TestTryFinally 
    { 
     public static void Main() 
     { 
      int i = 123; 
      string s = "Some string"; 
      object o = s; 

      try 
      { 
       // Invalid conversion; o contains a string not an int 
       i = (int)o; 
      } 

      finally 
      { 
       Console.Write("i = {0}", i); 
      } 
     } 
    } 

답변

3

나에게 잘 보입니다. 실제로 finally 블록을 실행합니다. 내 생각 엔 디버거가 대화 상자를 표시하고 실행을 계속하도록 관리하지 않는다는 것입니다.

디버거에서 실행하지 마십시오. 디버거가 "도움"하려고 할 때 방해가되지 않습니다.

+0

"팝업"이 무엇인지 설명해 주실 수 있습니까? – Simon

+0

@ 시몬 : 그는 예외 팝업을 의미합니다. – SLaks

+0

@ 시몬 : 조금 더 명확하게 편집했습니다. –

2

창이 너무 빨리 닫히지 않아서 눈치 채지 못하십니까? 의 readline에서

넣고 그것을 기다릴 수 있도록 : 당신이 예외를 잡으면

public class TestTryFinally 
    { 
     public static void Main() 
     { 
      int i = 123; 
      string s = "Some string"; 
      object o = s; 

      try 
      { 
       // Invalid conversion; o contains a string not an int 
       i = (int)o; 
      } 

      finally 
      { 
       Console.Write("i = {0}", i); 
       Console.Write("Press Enter to continue."); 
       Console.ReadLine(); 
      } 
     } 
    } 
0

그냥 존 소총의 대답에 확장, 디버거가 팝업되지 않습니다.

try { 
    i = (int)o; 
} 
catch(InvalidCastException e) {} 
finally { 
    Console.Write("i = {o}",i); 
} 
관련 문제