如何在C#中的异常中获取错误号而不是错误消息?

Rik*_*ika 4 c# exception-handling exception

有没有办法可以得到相应的错误代码Exceptions?我需要抛出异常错误代码而不是它的消息,以便我根据错误代码向用户显示正确的消息.

p.s*_*w.g 8

如果您正在寻找win32错误代码,那么该Win32Exception课程就可以使用

catch (Win32Exception e)
{  
    Console.WriteLine("ErrorCode: {0}", e.ErrorCode);
}
Run Code Online (Sandbox Code Playgroud)

对于普通的旧CLR异常,没有整数错误代码.

鉴于您描述的问题,我将使用millimoose的解决方案来获取每种类型的异常的资源字符串.


mil*_*ose 5

异常的全部意义在于它们提供的信息比错误代码更丰富.默认情况下,它们没有,并且实际上并不需要.如果您喜欢使用错误代码,您可以使用自己的异常基类,从中派生所有例外:

public abstract class MyExceptionBase : Exception 
{
    public int ErrorCode { get; set; }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

那就是说,我不会打扰.我个人使用他们的类型名称将异常映射到错误消息:

ResourceManager errorMessages = ...;
errorMessages.GetString(ex.GetType().FullName);
Run Code Online (Sandbox Code Playgroud)

(您还可以创建更灵活的方案,例如使资源格式化字符串并将异常属性插入其中.)