尝试在c#中创建我的前几个自定义异常 我真的不理解MSDN文章以及它们为什么有多个相同的实例
public class CustomException : Exception
{
public CustomException(): base() { }
public CustomException(some message): base() { }
}
等等
我想做的事情如下:
public class CustomException : Exception
{
public AlreadySentException() : base () { }
public InvalidMessageException() : base() { }
}
我只是希望能够调用这些例外。
非常感谢关于如何实现这一点的想法/建议。
由于
答案 0 :(得分:8)
定义不同的异常类。就这么简单!
[Serializable]
public class CustomException : Exception
{
public CustomException() { }
public CustomException(string message) : base(message) { }
public CustomException(string message, Exception inner) : base(message, inner) { }
protected CustomException(
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
: base(info, context) { }
}
[Serializable]
public class AlreadySentException : CustomException
{
public AlreadySentException() { }
public AlreadySentException(string message) : base(message) { }
public AlreadySentException(string message, Exception inner) : base(message, inner) { }
protected AlreadySentException(
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
: base(info, context) { }
}
[Serializable]
public class InvalidMessageException : CustomException
{
public InvalidMessageException() { }
public InvalidMessageException(string message) : base(message) { }
public InvalidMessageException(string message, Exception inner) : base(message, inner) { }
protected InvalidMessageException(
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
: base(info, context) { }
}
答案 1 :(得分:1)
异常只是从基类Exception
类派生的类。
public class CustomException(): base()
{
}
public class CustomException(some message): base()
{
}
这不是有效的c#代码。但他们看起来可能是建设者:
public CustomException(): base()
{
}
public CustomException(some message): base()
{
}
这些是一个CustomException
类的不同构造函数。您将使用其中一个构建您的类,具体取决于您是否要包含消息。但它们都会导致相同的异常。
要定义所需的例外情况,您需要从Exception
public class AlreadySentException : Exception { }
public class InvalidMessageException : Exception { }
如果你对类继承不满意,我建议你先刷一下。
答案 2 :(得分:1)
public CustomException(): base()
{
}
public CustomException(some message): base()
{
}
那些是重载的构造函数,它们引用同一个对象;您可以通过调用new CustomException()或CustomException(“some string”)来实例化CustomException类。
你需要的是不同的类,如下所示:
public class AlreadySentException : Exception
{
}
public class InvalidMessageException: Exception
{
}
您也可以使用这些类进行重载。假设想要拥有默认消息或自定义消息,您可以这样做:
public class AlreadySentException : Exception
{
public AlreadySentException() : base("Already sent"){}
public AlreadySentException(string message) : base(message){}
}
它将调用Exception基类的重载版本,该基类填充Message属性。