Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建多个自定义异常?_C#_Asp.net Mvc_Exception - Fatal编程技术网

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

C# 创建多个自定义异常?,c#,asp.net-mvc,exception,C#,Asp.net Mvc,Exception,尝试在c中创建前几个自定义异常 我真的不理解MSDN文章以及为什么它们有多个相同的实例 public class CustomException : Exception { public CustomException(): base() { } public CustomException(some message): base() { } } 等等 我想做的事情如下 public class CustomException : 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() { }
 }
我只想能够调用这些异常

对于如何实施这一点的想法/建议,我们将不胜感激


谢谢定义不同的异常类。就这么简单

    [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) { }
    }

异常只是从基异常类派生的类

这不是有效的c代码。但他们看起来可能是建设者:

public CustomException(): base()
{
}

public CustomException(some message): base()
{
}
这些是一个CustomException类的不同构造函数。根据是否要包含消息,可以使用其中一个来构造类。但它们都会导致相同的例外

要定义所需的异常,您需要从异常派生每个异常:

如果您对类继承感到不舒服,我建议您先温习一下

public CustomException(): base()
{
}

public CustomException(some message): base()
{
}
这些是重载构造函数,它们引用相同的对象;您可以通过调用new CustomException或CustomExceptionsome字符串来实例化CustomException类

您需要的是不同的类,如下所示:

public class AlreadySentException : Exception
{
}

public class InvalidMessageException: Exception
{
}
您也可以对这些类使用重载。假设您想要拥有默认消息或自定义消息,可以执行以下操作:

public class AlreadySentException : Exception
{
    public AlreadySentException() : base("Already sent"){}
    public AlreadySentException(string message) : base(message){}
}

它将调用重载版本的异常基类,该基类填充消息属性。

类不是这样工作的。这些都是构造函数。谢谢,哈哈,我明白了:别忘了VisualStudio有异常的spippet。只需键入exception并按Tab@NechytailoOleh这个例子就是这样产生的;谢谢你的帮助!OP似乎需要AlreadySent和InvalidaMessage异常才能从其自定义异常派生。感谢您的帮助!
public class AlreadySentException : Exception
{
}

public class InvalidMessageException: Exception
{
}
public class AlreadySentException : Exception
{
    public AlreadySentException() : base("Already sent"){}
    public AlreadySentException(string message) : base(message){}
}