2009-11-17 44 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) 
     { 
     }