2009-11-17 41 views
5

今天我在一些代碼中有一個例外:「一個[某個異常]未處理。」「try ... catch」塊中的代碼如何引發未處理的異常?

但是,此代碼顯然是一個「嘗試/捕獲」結構的「嘗試」塊內。

缺少什麼我在這裏?

更新:這是C#

更新:哦,算了吧。事實證明,錯誤的具體機制是我是一個白癡。沒有解決這個問題。

+3

? – stusmith 2009-11-17 16:08:05

+0

你能發表一些代碼嗎? – 2009-11-17 16:09:45

+0

如果您發佈您的代碼,可能會更容易診斷您的問題 – 2009-11-17 16:09:48

回答

5

catch語句是否指定特定類型的異常?

如果是這樣,它只會捕獲該類型的異常。

+0

我在捕捉「例外」。難道不是每個人都從中得到的? – Deane 2009-11-17 16:32:28

+0

不一定,請儘量不要在catch塊中指定任何東西。 – 2009-11-17 16:40:39

2

是你在調試器中運行「的例外打破」 /「上拋出突破」開啓?在這種情況下,您會在傳遞給try/catch之前看到異常。

+0

這是在調試器中,是的。這可能是。在Visual Studio中,這是一個設置的地方? – Deane 2009-11-17 16:33:02

+0

當你有異常時,你可以繼續,然後看到它進入try/catch? 異常設置通常在「Debug-> Exceptions」下。根據不同的語言,你可以做不同的事情。 – 2009-11-17 17:29:27

1

我有10美元說它的一個ThreadAbortException或一些其他自拋異常。如果是這種情況,你必須兩次捕捉異常。

0

不知道語言很難說,但許多語言都有無法捕獲的異常概念 - 例如在.NET中,OutOfMemoryException和ExecutionEngineException(等等)無法被捕獲,因爲它們本質上是不可恢復的。

3

造成遞歸一些問題,如計算器例外之類會拋出的try ... catch塊內,因爲他們沒有真正從代碼塊中的任何特定行拋出,而是由CLR。對於內存超出範圍的異常和其他問題,這也不是任何一行代碼的直接結果。

也許你在談論這樣的事情:

alt text

4

非託管異常不會被趕上(例外五)被抓,你可以嘗試

try 
    { 
    } 
    catch 
    { 
    } 

,而不是

您使用什麼語言/框架
 try 
     { 
     } 
     catch (Exception e) 
     { 
     }