有没有办法我可以获得相应的错误代码Exceptions
?我需要抛出的异常错误代码而不是它的消息,以便我根据错误代码向用户显示正确的消息。
问问题
26242 次
3 回答
8
如果您正在寻找 win32 错误代码,可以在Win32Exception
课堂上找到
catch (Win32Exception e)
{
Console.WriteLine("ErrorCode: {0}", e.ErrorCode);
}
对于普通的旧 CLR 异常,没有整数错误代码。
鉴于您描述的问题,我会使用millimoose的解决方案来获取每种异常类型的资源字符串。
于 2013-03-17T15:45:38.770 回答
5
异常的全部意义在于它们提供了比错误代码更丰富的信息。默认情况下,他们没有,也不需要一个。如果您喜欢使用错误代码,您可以使用您自己的异常基类,您可以从中派生所有异常:
public abstract class MyExceptionBase : Exception
{
public int ErrorCode { get; set; }
// ...
}
这么说,我就不打扰了。我个人使用它们的类型名称将异常映射到错误消息:
ResourceManager errorMessages = ...;
errorMessages.GetString(ex.GetType().FullName);
(您还可以创建更灵活的方案,例如使资源格式化字符串并将异常属性插入其中。)
于 2013-03-17T15:47:34.290 回答
3
对于升级为托管异常的 COM 异常,您将能够从属性中检索“错误代码” ,如下所示:HResult
try {
// code goes here
} catch(System.IO.FileNotFoundException ex) {
Console.WriteLine(
String.Format("(HRESULT:0x{1:X8}) {0}",
ex.Message,
ex.HResult)
);
}
然而,并非所有异常都会有一个有意义的 HResult 集。
对于 .NET 3.0、3.5 和 4.0,您必须使用反射来获取HResult
标记为 的属性的值protected
。
于 2013-03-17T15:47:40.450 回答