【发布时间】:2016-04-05 14:01:30
【问题描述】:
当我使用 .NET Native 编译器编译 UWP 应用并打开代码优化(本质上是发布模式)时,当我尝试访问 catch 块中的实际异常时,我会收到 NullReferenceException。
代码示例:
try
{
throw new ArgumentNullException("Param");
}
catch (ArgumentNullException ex) when (ex.ParamName == "Param")
{
ErrorBlock.Text = ex.ParamName; // ErrorBlock is a TextBlock in the xaml
}
catch (Exception)
{
}
它进入正确的 catch 块,并在我访问 ex 时抛出 NullReferenceException。仅当 .Net Native 和代码优化都打开时才会失败。
是什么导致了这个问题?
【问题讨论】:
-
@Pan 为什么要删除标签?它似乎与这种构建模式有关,因此可能是 .NET native 的编译器问题。
-
因为它们无关紧要。
exc.Message为空。这是一个普通的 NulLReferenceException。 OP调用了只接受参数名的构造函数 -
不,它不是...消息是默认的。请自行尝试此代码。
-
是的,这不是一个普通的 NRE... 异常可以在它上面的行上很好地取消引用。
-
“异常可以在其上方的行中很好地取消引用” - 是的,不是的,异常过滤器并不是那么简单。
标签: c# c#-6.0 .net-native