C# 如何获取引发UnauthorizedAccessException的路径?

C# 如何获取引发UnauthorizedAccessException的路径?,c#,exception,C#,Exception,有人知道当你在C#中发现一个未经授权的访问异常时,是否有可能访问抛出它的路径?我不希望错误消息只是导致问题的路径。我拥有的try-catch块可以捕捉到许多不同的异常,但我需要报告它并继续到下一个目录/文件,而不添加整个异常消息。在UnauthorizedAccessException的message属性中,您将看到如下内容: Access to the path 'E:\Domains\xxx\wwwroot\Images\main.aspx' is denied. 您可以解析此消息的路径。

有人知道当你在C#中发现一个未经授权的访问异常时,是否有可能访问抛出它的路径?我不希望错误消息只是导致问题的路径。我拥有的try-catch块可以捕捉到许多不同的异常,但我需要报告它并继续到下一个目录/文件,而不添加整个异常消息。

在UnauthorizedAccessException的message属性中,您将看到如下内容:

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

您可以解析此消息的路径。

可能会使您的错误处理更精细,因此当它爆炸时,您只能捕获一次尝试?您可以通过将有问题的代码重构为实用方法来实现这一点(无需重复)

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

其中
TryCopyFile
捕获异常并记录作为参数传递的(单个)路径。

这种方法可能会导致可移植性问题,本地化和可能更新版本的.net framework。是的,我考虑过这样做,但是我认为,由于异常消息是静态的,它只是向消息中添加一个变量,可能有一些方法可以直接访问该变量,而不是解析它,所以我想我首先检查是否可能。这是一个糟糕的API,让你分析错误消息。采纳了你的建议,使错误处理更细粒度地成为?令人震惊的是,没有一个用于此的文档化API。