考慮下面的「安全」計劃:爲什麼.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