如何在“try ... catch”块中抛出一个未处理的异常?

时间:2009-11-17 16:06:33

标签: c# error-handling

今天我的一些代码中有一个例外:“[某个例外]未处理。”

但是,这段代码显然位于“try / catch”结构的“try”块中。

我在这里缺少什么?

更新:这是C#

更新哦,别忘了。事实证明,错误的具体机制是我是个白痴。对此没有任何解决方法。

6 个答案:

答案 0 :(得分:5)

catch语句是否指定了特定类型的异常?

如果是,它只会捕获这种类型的异常。

答案 1 :(得分:4)

catch不会捕获非托管异常(例外e),您可以尝试

    try
    {
    }
    catch
    {
    }

而不是

        try
        {
        }
        catch (Exception e)
        {
        }

答案 2 :(得分:3)

由递归引起的一些问题,例如StackOverFlow异常等会抛出try ... catch块,因为它们实际上并不是从块内的任何特定代码行抛出,而是由CLR抛出。对于内存超出范围的异常以及任何一行代码不直接导致的其他问题,情况也是如此。

也许你在谈论这样的事情:

alt text

答案 3 :(得分:2)

您是否在调试器中运行“异常中断”/“抛出中断”?在这种情况下,您会在将异常传递给try / catch之前看到异常。

答案 4 :(得分:1)

我有10美元说它的ThreadAbortException或其他一些自抛异常。如果是这种情况,您必须两次捕获异常。

答案 5 :(得分:0)

在不知道语言的情况下很难说,但许多语言都有无法捕获的异常概念 - 例如在.NET中,无法捕获OutOfMemoryException和ExecutionEngineException(以及其他语言),因为它们基本上是不可恢复的。