2011-02-11 25 views
0

我一直在閱讀有關try/finally的MSDN,並發現了以下代碼。他們說它會運行Finally子句,但是當我運行它時,它不會繼續,並且不會運行它。問題是什麼?來自MSDN的示例不起作用 - 試試/終於

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 2011-02-11 14:00:45

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); 
}