今天我在一些代碼中有一個例外:「一個[某個異常]未處理。」「try ... catch」塊中的代碼如何引發未處理的異常?
但是,此代碼顯然是一個「嘗試/捕獲」結構的「嘗試」塊內。
缺少什麼我在這裏?
更新:這是C#
更新:哦,算了吧。事實證明,錯誤的具體機制是我是一個白癡。沒有解決這個問題。
今天我在一些代碼中有一個例外:「一個[某個異常]未處理。」「try ... catch」塊中的代碼如何引發未處理的異常?
但是,此代碼顯然是一個「嘗試/捕獲」結構的「嘗試」塊內。
缺少什麼我在這裏?
更新:這是C#
更新:哦,算了吧。事實證明,錯誤的具體機制是我是一個白癡。沒有解決這個問題。
catch語句是否指定特定類型的異常?
如果是這樣,它只會捕獲該類型的異常。
我在捕捉「例外」。難道不是每個人都從中得到的? – Deane 2009-11-17 16:32:28
不一定,請儘量不要在catch塊中指定任何東西。 – 2009-11-17 16:40:39
是你在調試器中運行「的例外打破」 /「上拋出突破」開啓?在這種情況下,您會在傳遞給try/catch之前看到異常。
這是在調試器中,是的。這可能是。在Visual Studio中,這是一個設置的地方? – Deane 2009-11-17 16:33:02
當你有異常時,你可以繼續,然後看到它進入try/catch? 異常設置通常在「Debug-> Exceptions」下。根據不同的語言,你可以做不同的事情。 – 2009-11-17 17:29:27
我有10美元說它的一個ThreadAbortException或一些其他自拋異常。如果是這種情況,你必須兩次捕捉異常。
不知道語言很難說,但許多語言都有無法捕獲的異常概念 - 例如在.NET中,OutOfMemoryException和ExecutionEngineException(等等)無法被捕獲,因爲它們本質上是不可恢復的。
造成遞歸一些問題,如計算器例外之類會拋出的try ... catch塊內,因爲他們沒有真正從代碼塊中的任何特定行拋出,而是由CLR。對於內存超出範圍的異常和其他問題,這也不是任何一行代碼的直接結果。
也許你在談論這樣的事情:
非託管異常不會被趕上(例外五)被抓,你可以嘗試
try
{
}
catch
{
}
,而不是
您使用什麼語言/框架 try
{
}
catch (Exception e)
{
}
? – stusmith 2009-11-17 16:08:05
你能發表一些代碼嗎? – 2009-11-17 16:09:45
如果您發佈您的代碼,可能會更容易診斷您的問題 – 2009-11-17 16:09:48