代码之家  ›  专栏  ›  技术社区  ›  Jacob Poul Richardt

捕获的异常如何为null(而不是NullReferenceException)?

  •  5
  • Jacob Poul Richardt  · 技术社区  · 15 年前

    我遇到了一个相当奇怪的小问题。

    在下面的代码中我无法理解如何 e null

    try
    {
        //Some Code here
    }
    catch (Exception e)
    {
        //Here e is null
    }
    

    据我所知,, throw null throw new NullReferenceException() .

    不管怎样,我的问题是,你怎么能 是否为空?-希望这个问题的答案能帮助找到这个问题的根源。

    我发现它是因为它在catch语句中导致了NullReferenceException,使用调试器我看到了同样的情况。

    编辑2

    4 回复  |  直到 15 年前
        1
  •  7
  •   JaredPar    15 年前

    你如何确定e实际上是空的?我尝试了一些示例,并通读了有关异常的CLI规范,它似乎不允许异常值为null。此外,如果它为null,它将没有类型,因此将无法满足类型为exception的筛选条件。

    是否使用调试器验证此值?如果是这样,请尝试将其切换为内联断言。

        2
  •  2
  •   Quibblesome    15 年前

    积极的

    try
    {
        //Some Code here
    }
    catch (Exception e)
    {
        int i = 0; // breakpoint here
    }
    

        3
  •  1
  •   Brett Allen    15 年前

    有可能抛出的异常不符合CLS,这实际上不应该由带有筛选器的Try/Catch捕获。

        4
  •  0
  •   Gangnus    13 年前