C#自定义异常就这么简单

Posted .NET100

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#自定义异常就这么简单相关的知识,希望对你有一定的参考价值。

C#是一种强类型语言,可以捕获和处理各种异常,从而帮助我们发现程序中出现的错误。在程序开发过程中,如果需要找到特定的错误情况并处理,这时就需要创建自定义异常。本文将介绍如何在C#中创建和使用自定义异常。

1、什么是异常?

异常是指在程序执行期间发生的错误或异常情况,例如除法中除以0、文件不存在、内存不足等。当发生异常时,程序会停止执行当前的操作,并抛出一个异常对象。异常对象包含有关异常情况的信息,例如异常类型、错误消息、堆栈跟踪等。

C# 异常处理基于四个关键字构建:try、catch、finally 和 throw。

1)try- try 块标识为其激活特定异常的代码块。它后面是一个或多个捕获块。

2)catch- 程序在程序中要处理问题的位置使用异常处理程序捕获异常。catch 关键字捕获发生的异常。

3)finally - finally 块用于执行一组给定的语句,无论是否引发异常。例如,如果打开一个文件,无论是否引发异常,都必须关闭该文件。

4)throw- 当出现问题时,程序会引发异常。这是使用 throw 关键字完成的。

2、在C#中自定义异常

接下来我们来看看如何创建C#异常类,在C#中,创建自定义异常很简单。只需要创建一个类,并从System.Exception类或其子类派生即可。例如,以下代码创建了一个名为CustomException的自定义异常类:

//创建一个没有错误消息的异常对象
public class CustomException : Exception

    public CustomException()  
    //创建一个包含错误消息的异常对象。
    public CustomException(string message)
        : base(message)throw new Exception(message);
    //创建一个包含错误消息和内部异常对象的异常对象。
    public CustomException(string message, Exception innerException)
        : base(message, innerException)  

这样一个自定义异常就创建好了。

使用自定义异常类

使用自定义异常与使用内置异常类相同。只需要在程序中抛出异常对象,并使用try-catch块捕获异常即可。代码如下:

try

    //如果是k引发d二异常会报错系统异常
    //int i=0; int j=1;
    //int k=i/j;
    // 某些操作 下面会报自定义异常
    throw new CustomException("发生了自定义异常");

catch (CustomException ex)

    Console.WriteLine("自定义异常:"+ex.Message);

catch (Exception ex)

    Console.WriteLine("系统异常:"+ex.Message);

 //欢迎关注公众号:DOTNET开发跳槽,领取海量面试题。加微信号xbhpnet入群

上面代码如果是除0问题会报系统异常,而自定义异常在触发的时候报自定义异常。如下:

3、自定义异常的使用场景

以上实现了自定义异常类,那么自定义异常类通常在哪些场景下使用呢?

1)检测业务规则

当我们需要检查业务规则时,可以创建自定义异常类。例如,当用户尝试创建一个已经存在的账户时,我们可以抛出一个名为DuplicateAccountException的自定义异常。

2)易于调试

通过使用自定义异常类,我们可以更好地调试代码。当我们抛出一个自定义异常时,可以将更多有用的信息传递给调用者,例如错误消息、错误代码和堆栈跟踪等。这些信息有助于调用者快速定位问题并进行修复。

结语

自定义异常是处理特定错误情况的好方法。通过创建自定义异常类,我们可以更好地控制程序的行为,并提供有用的错误信息。希望本文对你带来收获,欢迎留言和吐槽。5.1长假结束了,希望大家过完节满血复活,重回人生巅峰!!

参考:微软官方文档

版权声明:本文来源于网友收集或网友供稿,仅供学习交流之用,如果有侵权,请转告小编或者留言,本公众号立即删除。


来源公众号:DotNet开发跳槽

C# 自定义异常

 

1、自定义异常类

1.1 为什么要自定义异常类

(1)没有具体系统异常相对应

(2)不希望在Catch块中处理

(3)希望能明确标志错误种类的异常

1.2 自定义异常类定义步骤

继承自System.ApplicationException类,并使用Exception作为后缀名。

1.3 自定义异常的准则

 技术图片

 

自定义异常:

class MyException : ApplicationException
    
        public string error;
        private Exception innerException;

        public MyException()  
        public MyException(string msg) :base(msg)
        
            this.error = msg;
        
        public MyException(string msg, Exception innerException):base(msg,innerException)
        
            this.innerException = innerException;
            error = msg;
        
        public string GetError()
        
            return error;
        
    

测试:

  class Program
    
        static void Main(string[] args)
        
            try
            
                // 无参构造对象
                //throw new MyException();
                //throw new MyException("我的错误哦");
                throw new MyException("我的错误",new Exception("这是Exception的错误"));
            
           
            catch (MyException e) 
            
                //Console.WriteLine(e.GetError());
                Console.WriteLine(e.InnerException.Message);
            
            //*/
            /*
           //因为Exception是MyException父类,所以如果这里是Exception也能捕获到MyException的错误
           //前提是MyException必须初始化父类Exception构造函数,即 public MyException(string msg) :base(msg)
           catch (Exception e)
           
               Console.WriteLine(e.Message);
           
           //*/

            Console.ReadKey();
        
    

 

以上是关于C#自定义异常就这么简单的主要内容,如果未能解决你的问题,请参考以下文章

C# 自定义异常

java 自定义事件的触发及监听

在 C# 中使用自定义构造函数创建异常 [重复]

编写高质量代码改善C#程序的157个建议——建议67:慎用自定义异常

c#自定义app.config生成配置系统初始化失败异常

c# throw的用法