2015-12-01 31 views
-2

我的代碼:代碼執行罰款內部try塊,但如果嘗試不存在失敗

try 
{ 
    IUIItem menuItem = menu.Get(SearchCriteria.ByText(criteria)); 
    menuItem.Click(); 
} 

只成功當try塊段(無例外)。如果try塊被省略(不嘗試),它會拋出一個錯誤。對我來說似乎是不可能的,但事情就是這樣。爲什麼?

+0

你可以編輯你的問題來添加你的'catch'塊嗎? –

+1

可以在此嘗試塊之前和之後張貼一些代碼。 &什麼是例外? – Kapoor

+0

你確定它成功了嗎?請顯示您的catch塊 – Breeze

回答

2

您需要查看try-catch的定義。當你有try-catch時,異常仍然被拋出,但try-catch處理它,所以你的代碼可以繼續運行。如果沒有嘗試,程序將會中斷,因爲沒有任何東西可以處理它。

0

如果沒有catch語句,此代碼將不會編譯。如果你有:

try 
{ 
    IUIItem menuItem = menu.Get(SearchCriteria.ByText(criteria)); 
    menuItem.Click(); 
} 
catch (Exception ex) 
{ 
} 

的代碼將編譯並拋出被逮住,但它沒有被這樣做,你不會注意到有什麼異常。

如果添加:

catch (Exception ex) 
{ 
    Console.WriteLine(ex.Message); 
    throw ex; 
} 

你會寫異常消息到控制檯,然後再次拋出(向前)除外。

相關問題