HIII。
是否有任何方法可以从常规异常类中唯一标识特定异常。
,即检索用于标识特定异常的唯一标识符的任何属性或方法。
我在xml文件中保留了一些错误值和相应的错误文本。我想读取该xml文件,并且必须获取错误ID并将相应的文本修复为标签。在系统异常的情况下,我们必须识别特定的异常。
答案 0 :(得分:3)
使用Exception.HResult
。
” HRESULT是一个32位值,分为三个不同的字段:严重性代码,设施代码和错误代码。严重性代码指示返回值是表示信息,警告还是错误。设施代码标识负责该错误的系统区域。 错误代码是分配用于表示异常的唯一编号。每个异常都映射到不同的HRESULT。当托管代码抛出异常时,运行时将HRESULT传递给COM客户端。当非托管代码返回错误时,HRESULT将转换为异常,然后运行时抛出该异常。 “
来自http://msdn.microsoft.com/en-us/library/system.exception.hresult%28v=VS.100%29.aspx
UPDATE: HResult字段在System.Exception基类上受到保护,因此您无法访问它。派生的COM类使用HResult,因为它是在COM下报告错误的主要方式,托管代码不使用它。
我建议您创建自己的Exception类型,其中包含GUID:
public class MyExceptionWrapper : Exception
{
//Have a read on GUIDs and use one of the other constructors if possible.
public Guid GUID { get; set; }
//Construct your Exception type using the constructor from System.Exception
// and then assign the GUID.
public MyExceptionWrapper(string message, Exception inner) :
base(message, inner)
{
GUID = new Guid();
}
}
然后,您可以使用此模式进行错误处理:
try
{
//cause an error
}
catch(Exception ex)
{
MyExceptionHandlerMethod(new MyExceptionWrapper("I caused an error", ex));
//OR - to throw up the stack
throw new MyExceptionWrapper("I caused an error", ex);
}