嗨,任何人都可以告诉我如何在C#中编写用户定义的异常?正如我们在Java中可以用C#编写的那样?
答案 0 :(得分:16)
您希望从System.Exception
继承,并且最好提供(至少)相同的公共构造函数,并将参数传递给基础构造函数。添加您认为适合您特定需求的相关属性和/或方法。
public class MyException : System.Exception
{
public MyException() : base() { }
public MyException(string message) : base(message) { }
public MyException(string message, Exception innerException) : base(message, innerException) { }
}
答案 1 :(得分:11)
它实际上和Java一样 - 你扩展了Exception
类。
以最基本的形式。
public class CustomException : System.Exception
{
public CustomException()
{
}
public CustomException(string message)
: base(message)
{
}
public CustomException(string message, System.Exception innerException)
: base(message, innerException)
{
}
}
然后,使用字段或属性添加要捕获的数据。
出于兴趣,在回答这个问题之前,我检查了自定义异常上的Microsoft Design Guildlines。 Designing Custom Exceptions(MSDN)
ArgumentException
。 HOWEVER 不要来自ApplicationException
。它没有害处,这样做是没有意义的。 MSDN Blog Post on ApplicationException。ISerializable
接口使异常可序列化。显然,异常必须是可序列化的,才能在应用程序域和远程处理边界之间正常工作。我高度建议您阅读MSDN上的Design Guidelines。