Jac*_*rdt 5 .net c# multithreading exception-handling exception
我遇到了一个相当奇怪的小问题.
在下面的代码中我无法理解怎么e
可能null
;
try
{
//Some Code here
}
catch (Exception e)
{
//Here e is null
}
Run Code Online (Sandbox Code Playgroud)
据我所知,throw null
将转换为throw new NullReferenceException()
.
问题似乎与多线程有关,因为删除另一个线程似乎也解决了它.或者至少我在上面的代码在新线程中运行时才看到这个.整个程序使用很多线程,有点复杂.
无论如何我的问题是,怎么可能e
是null? - 希望答案可以帮助找到这个问题的根源.
编辑 我发现它,因为它在catch语句中引起了NullReferenceException,并且使用调试器我看到同样的事情.
编辑2 第二天打开VisualStudio再次尝试,没有代码更改,现在相同的口号被"调用",但这次e不是null.看起来这是一个VS故障.
你如何确定e实际上是空的?我已经尝试了一些示例并通过CLI规范读取异常,但它似乎不允许异常值为null.此外,如果它为null,则它将没有类型,因此无法满足类型异常的过滤条件.
您是否使用调试器来验证此值?如果是这样,请尝试将其切换为内联断言.