考虑下面的“安全”计划:为什么.net异常不被捕获?
internal class Safe
{
public static void SafeMethodWillNeverThrow()
{
try
{
var something = ThrowsNewException();
Func<int, string> x = p => something.ToString();
}
catch (Exception)
{
}
}
private static object ThrowsNewException()
{
throw new Exception();
}
public static void Main()
{
SafeMethodWillNeverThrow();
}
}
绝不应该配有一个例外。 但是为什么当我运行它失败?为什么SafeMethodWillNeverThrow()抛出异常?
测试此代码之前,请阅读下面的答案。
我运行上面的代码,并且无法重现问题 - 它按预期工作,异常被捕获 – sergtk
请检查是否为您的项目启用了代码合同运行时合同检查,然后构建发布配置。我仍然无法重现它,请让我知道您使用的代码合同的版本。谢谢 –
与1.4.50327.0重现。奇怪:-O – sergtk