2009-05-06 69 views
3

有人會知道,如果你在C#中捕獲一個UnauthorizedAccessException可能訪問拋出它的路徑嗎?我不希望錯誤消息只是導致問題的路徑。 try catch塊我可以捕獲許多不同的塊,但我需要報告它並繼續到下一個目錄/文件,而不添加整個異常消息。如何獲取拋出UnauthorizedAccessException的路徑?

回答

4

也許讓你的錯誤處理更加細化,所以你只能在發生一次單一的嘗試時發現它?你可以這樣做(不重複自己)通過重構有問題的代碼出一個實用的方法 - 即

TryCopyFile(path1); 
TryCopyFile(path2); 
TryCopyFile(path3); 

TryCopyFile捕獲異常,並記錄被作爲參數傳遞的(單)路徑。

1

在UnauthorizedAccessException的Message屬性,你會看到這樣的事情:

Access to the path 'E:\Domains\xxx\wwwroot\Images\main.aspx' is denied. 

您可以分析道路出這個消息。

+1

此方法可能會導致可移植性,本地化和可能更新版本的.net框架的問題。 – marklam 2009-05-06 15:14:24

+1

是的,我認爲這樣做,但我認爲,因爲異常消息是靜態的,它只是簡單地向消息添加一個變量,可能有一些方法直接訪問該變量,而不是解析它,所以我想我先檢查是否可能。 – Trotts 2009-05-06 15:18:50