2012-06-06 38 views
0

每次庫打開某個文件時,第三方庫都會導致AccessViolationException。我試圖遍歷數以千計的文件,因此,捕捉異常,將該項添加到不打開並繼續的文件列表將會非常有用。但是,異常不會被catch(Exception e)塊捕獲,也不會被特定的catch(AccessViolationException ave)塊捕獲。捕獲AccessViolationException

在另一個question的評論中,John Saunders建議可以捕獲AccessViolationException,但是這不應該這樣做。

什麼是程序員要做的事情?

+1

你怎麼知道訪問衝突沒有破壞你的應用程序的內存?你不這樣做,所以你不能忽略它並繼續。 –

+2

您是否嘗試過使用[AppDomain.UnhandledExection](http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx)來捕獲未處理的appdomain中的任何內容 - 這會給你有機會調查異常。當您確信自己知道發生了什麼時,您可以將其刪除。 – RobertMS

回答

3

您可能不希望發現AccessViolationException,因爲您無法保證該例外未破壞應用程序的狀態。

默認情況下,由於上述原因,執行不會到達catch塊。如果您明確要處理過程損壞異常,則需要使用HandleProcessCorruptedStateExceptions屬性修飾您的類。

相關問題