2010-05-13 140 views

回答

8

您可以從try塊內返回,但請記住finally子句中的代碼將在從方法返回之前執行。例如,使用下面的方法調用MessageBox.Show(test().ToString());將導致出現兩個消息框(第一個顯示「3」,第二個顯示「1」)。

int test() 
    { 
     try 
     { 
      return 1; 
      throw new Exception(); 
     } 
     catch (Exception e) 
     { 
      return 2; 
     } 
     finally 
     { 
      MessageBox.Show("3"); 
     } 
    } 
+4

還要注意,試圖從finally子句返回會導致編譯器錯誤。 – TreDubZedd 2010-05-13 17:06:51

+0

+1對答案和評論今天學習了一些關於finally塊的內容。 – 2010-05-13 21:45:36

-1

當然,你可以不喜歡它:

public string X(..) 
{ 
    try 
    { 
     //do something 
     return value; 
    } 
    catch(Exception ex) 
    { 
     throw; 
     //or return here 
    } 
} 
+0

重要的是你要麼投擲或返回到catch塊。如果try代碼引發異常,try塊中的返回將不會被執行。 – 2010-05-13 16:17:49

+4

**絕不要寫'throw ex'!** – SLaks 2010-05-13 16:22:54

4

當然,你可以使用try塊的回報,而且語法就像其他任何地方。

try 
{ 
    return 0; 
} 
catch (Exception e) 
{ 
    // handle exception 
} 
0

是的。例如,我可以使用局部變量而不必擴大其範圍。

int Foo(string bar) { 
    try { 
     int biz = int.Parse(bar); 

     return biz; 
    } catch(...) { 
     // Handle bad `bar` 
    } 
} 
0

這個問題的回答是肯定的。 作爲一個例子,你可以參考以下問題: finally and return 希望你也能得到澄清。

相關問題