0

试图在 C# 中创建我的前几个自定义异常我不太了解 MSDN 文章以及为什么它们有多个相同的实例

 public class CustomException : Exception
 {     
     public CustomException(): base() { }

     public CustomException(some message): base() { }
 }

等等等等

我想做的是如下

 public class CustomException : Exception
 {     
     public AlreadySentException() : base () { }

     public InvalidMessageException() : base() { }
 }

我只想能够调用这些异常。

关于如何实现这一点的想法/建议将不胜感激。

谢谢

4

3 回答 3

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) { }
    }
于 2013-06-13T21:28:46.897 回答
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 { }

如果您对类继承不满意,我建议您先复习一下。

于 2013-06-13T21:33:18.697 回答
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 属性。

于 2013-06-13T21:34:02.017 回答