今天我的一些代码中有一个例外:“[某个例外]未处理。”
但是,这段代码显然位于“try / catch”结构的“try”块中。
我在这里缺少什么?
更新:这是C#
更新哦,别忘了。事实证明,错误的具体机制是我是个白痴。对此没有任何解决方法。
答案 0 :(得分:5)
catch语句是否指定了特定类型的异常?
如果是,它只会捕获这种类型的异常。
答案 1 :(得分:4)
catch不会捕获非托管异常(例外e),您可以尝试
try
{
}
catch
{
}
而不是
try
{
}
catch (Exception e)
{
}
答案 2 :(得分:3)
由递归引起的一些问题,例如StackOverFlow异常等会抛出try ... catch块,因为它们实际上并不是从块内的任何特定代码行抛出,而是由CLR抛出。对于内存超出范围的异常以及任何一行代码不直接导致的其他问题,情况也是如此。
也许你在谈论这样的事情:
答案 3 :(得分:2)
您是否在调试器中运行“异常中断”/“抛出中断”?在这种情况下,您会在将异常传递给try / catch之前看到异常。
答案 4 :(得分:1)
我有10美元说它的ThreadAbortException或其他一些自抛异常。如果是这种情况,您必须两次捕获异常。
答案 5 :(得分:0)
在不知道语言的情况下很难说,但许多语言都有无法捕获的异常概念 - 例如在.NET中,无法捕获OutOfMemoryException和ExecutionEngineException(以及其他语言),因为它们基本上是不可恢复的。