【问题标题】:How to get the path that threw an UnauthorizedAccessException?如何获取引发 UnauthorizedAccessException 的路径?
【发布时间】:2009-05-06 15:05:35
【问题描述】:

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

【问题讨论】:

  • 可能是Data property 中的一个键?令人震惊的是,没有记录在案的 API。

标签: c# exception


【解决方案1】:

也许让您的错误处理更加精细,这样您就只能在失败时捕获一次尝试?您可以通过将有问题的代码重构为实用方法来做到这一点(无需重复自己) - 即

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

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

【讨论】:

  • 听取您的建议,使错误处理更加精细
【解决方案2】:

在 UnauthorizedAccessException 的 Message 属性中,您会看到如下内容:

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

你可以解析出这条消息的路径。

【讨论】:

  • 这种方法可能会导致 .net 框架的可移植性、本地化以及更新版本的问题。
  • 是的,我考虑过这样做,但是我认为由于异常消息是静态的,并且它只是在消息中添加一个变量,因此可能有某种方法可以直接访问该变量而不是解析它,所以我想我先检查一下是否可行。
  • 这是一个让你解析错误消息的糟糕 API。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
相关资源
最近更新 更多