C#创建多个自定义异常?

时间:2013-06-13 21:26:09

标签: c# asp.net-mvc exception

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

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

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

等等

我想做的事情如下:

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

     public InvalidMessageException() : base() { }
 }

我只是希望能够调用这些例外。

非常感谢关于如何实现这一点的想法/建议。

由于

3 个答案:

答案 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属性。