[英]How can code in a “try…catch” block throw an unhandled exception?
我今天在一些代碼中有一個例外:“[某些例外]未得到處理。”
但是,這段代碼顯然位於“try / catch”結構的“try”塊中。
我在這里錯過了什么?
更新:這是C#
更新:哦,忘了。 事實證明,錯誤的具體機制是我是個白痴。 對此沒有任何解決方法。
catch語句是否指定了特定類型的異常?
如果是,它將只捕獲該類型的異常。
catch(異常e)不會捕獲非托管異常,你可以試試
try
{
}
catch
{
}
代替
try
{
}
catch (Exception e)
{
}
由遞歸引起的一些問題,例如StackOverFlow異常等會拋出try ... catch塊,因為它們實際上並不是從塊內的任何特定代碼行拋出,而是由CLR拋出。 對於內存超出范圍的異常和其他不是任何一行代碼直接導致的問題,情況也是如此。
也許你在談論這樣的事情:
你是否在調試器中運行“異常中斷”/“拋出中斷”? 在這種情況下,您將在傳遞給try / catch之前看到異常。
我有10美元說它是一個ThreadAbortException或其他一些自我拋出的異常。 如果是這種情況,您必須捕獲兩次異常。
在不知道語言的情況下很難說,但許多語言都有無法捕獲的異常概念 - 例如在.NET中,無法捕獲OutOfMemoryException和ExecutionEngineException(以及其他語言),因為它們基本上是不可恢復的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.