出現這個問題說明.NET版本至少是4.0,由於微軟在.NET 4.0版本中更改了異常處理機制。微軟認爲catch(Exception)這種寫法是不負責任的,程序員應該按照異常嚴重類別決定程序是否繼續執行。然而事實是catch(Exception)遍地開花,程序出現異常後繼續頑強地執行,而後內存報錯,系統報錯,藍屏,用戶來一句"破系統"。如今微軟不想爲咱程序員背黑鍋了,有嚴重異常catch不到,直接拋出錯誤呈現給用戶。程序員
在配置文件中添加節點:(這個方案是全局性的,我的推薦)spa
<configuration> <runtime> <legacyCorruptedStateExceptionsPolicy enabled="true" /> </runtime> </configuration>
legacyCorruptedStateExceptionsPolicy就是在告訴程序,有嚴重異常程序內部吸取,其餘就別管了。
另外還有個辦法是在方法上添加 [HandleProcessCorruptedStateExceptionsAttribute]屬性,須要引入命名空間System.Runtime.ExceptionServices。
[HandleProcessCorruptedStateExceptionsAttribute]
public void ShowMessage(string msg)
{
//....
}
不過試了沒效果,囧。有哪位大神能告知下緣由啊?code