C#預設沒有攔截下面2個exception,假如有發生的話,可能就會直接結束程式.

  • 5582
  • 0

摘要:C#預設沒有攔截下面2個exception,假如有發生的話,可能就會直接結束程式.

同事提供的訊息。紀錄一下

C#預設沒有攔截下面2個exception,假如有發生的話,可能就會直接結束程式.
通常在呼叫廠商的DLL或是做Process操作時,會發生.
 
System.AccessViolationException: 嘗試讀取或寫入受保護的記憶體。這通常表示其他記憶體已損毀。
System.InvalidOperationException: 因為執行緒 (XXX) 已經結束,所以無法處理要求。
--------------------------------------------------------
 
修改方式,
1. 程式.exe.config
﹛ <runtime>
﹛ ﹛ <legacyCorruptedStateExceptionsPolicy enabled="true" />
﹛ </runtime>
</configuration>
 
 
2.主程式的進入點 ﹛Program.cs
﹛ ﹛ /// <summary>
﹛ ﹛ /// 應用程式的主要進入點。
﹛ ﹛ /// </summary>
﹛ ﹛ [STAThread]
﹛ ﹛ [HandleProcessCorruptedStateExceptions] ﹛//攔截特殊Exception,否則Try-Catch會擋不下來
﹛ ﹛ [SecurityCritical]
﹛ ﹛ static void Main()
﹛ ﹛ {
 
 
--------------------------------------------------------
參考來源:
 

 

============ 以下是簽名檔 ============

一個小小螺絲釘。

第一次建立Blog,希望以後能慢慢充實它。

Howard