我正在尝试编写代码以创建EpicFailException
类作为ApplicationException
的子类。我必须添加一个默认将HelpLink
属性设置为google.com的构造函数。以下是到目前为止的内容。关于如何应用子类的任何建议?
public class ApplicationException : Exception
{
public ApplicationException(string auxMessage, Exception inner) :
base()
{
this.HelpLink = "http://google.com";
}
}
最佳答案
.NET类的设计准则已更改; current recommendation is to derive from Exception
and not from ApplicationException
。
也就是说,如果需要在许多派生异常中设置HelpLink
属性,则可能需要创建一个基类,该基类需要HelpLink
属性的值作为参数,然后从该基类派生:
public abstract MyExceptionBase : Exception
{
protected MyExceptionBase(string message, string helpLink) :
base(message)
{
HelpLink = helpLink;
}
}
public MyException : MyExceptionBase
{
public MyException(string message) :
base(message, "http://www.google.com")
{ }
}
请注意,您仍应遵循所有其他guidelines for custom exceptions,例如序列化,无参数构造函数等。