【发布时间】:2012-06-02 22:07:23
【问题描述】:
考虑以下“安全”程序:
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() 会抛出异常?
在测试此代码之前,请阅读下面的答案。
【问题讨论】:
-
我运行了上面的代码,但无法重现问题 - 它按预期工作,异常被捕获
-
请检查您是否为您的项目启用了代码合同运行时合同检查,并且您构建了发布配置。我仍然无法复制它,请让我知道您正在使用的代码合同版本。谢谢
-
可以用 1.4.50327.0 重现。奇怪:-O
标签: .net exception exception-handling code-contracts