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开发跳槽

原文链接:https://www.cnblogs.com/xbhp/archive/2023/05/09/17384550.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#自定义异常就这么简单 - Python技术站

(0)
上一篇 2023年5月9日
下一篇 2023年5月9日

相关文章

  • CommunityToolkit.Mvvm8.1 viewmodel源生成器写法(3)

      本系列文章导航 https://www.cnblogs.com/aierong/p/17300066.html https://github.com/aierong/WpfDemo (自我Demo地址) 希望提到的知识对您有所提示,同时欢迎交流和指正 作者:aierong出处:https://www.cnblogs.com/aierong   说明 Co…

    C# 2023年4月17日
    00
  • 经典实例讲解C#递归算法

    经典实例讲解C#递归算法攻略 什么是递归算法 递归算法通过自身不断的调用自身来实现计算。它是一种比较常用的算法,可以用来解决很多复杂问题。 递归算法的特点 递归算法有以下几个特点: 递归调用必须有结束条件 函数调用自身 函数每次调用的参数不同 C#递归算法的示例 示例1:阶乘运算 阶乘是指一个数的阶乘是所有比它小的正整数的积。例如,5的阶乘为54321=12…

    C# 2023年6月6日
    00
  • C#中的位操作小结

    让我来给您详细讲解“C#中的位操作小结”的完整攻略。 一、概述 C#中的位操作是指可以直接打开和操纵整数的各个位的操作,它是一种非常高效和灵活的算法。在C#中,位操作可以方便地完成各种数据的处理和转换,如颜色值、文件属性、位图、掩码等等。 二、位操作运算符 C#中常用的位操作运算符有以下几种: & 按位与:将两个操作数对应的位进行与操作,结果为1的位…

    C# 2023年6月7日
    00
  • asp.net 虚方法、抽象方法、接口疑问

    ASP.NET是一种用于构建Web应用程序的框架,它支持许多编程范式。虚方法、抽象方法和接口是OOP(面向对象编程)中的重要概念,它们可以帮助我们更好地组织代码、提高代码的可复用性和可维护性。 虚方法(Virtual Methods) 虚方法是可以被覆盖或重写的方法,它需要在父类中声明为virtual,然后在子类中使用override关键字进行覆盖实现。虚方…

    C# 2023年6月3日
    00
  • c#显示当前在线人数示例

    下面是“c#显示当前在线人数示例”的完整攻略。 简介 在网站或应用程序的开发中,有时需要统计当前在线用户数。本文将展示如何使用C#编写代码来实现这一功能。 步骤 步骤1:设置计数器 为了记录当前在线用户数,我们需要设置一个计数器。我们可以使用Application对象的Application[“OnlineCount”]属性来实现这一点。 Applicati…

    C# 2023年6月7日
    00
  • 浅析c#范型中的特殊关键字where & default

    浅析C#范型中的特殊关键字where & default 范型参数的约束:where C#中的范型可以使方法或类不依赖于具体类型,从而提供了更强的通用性和可扩展性。但范型也有一些局限性,如类型参数无法被强制转换为不相关类型,无法访问特定的方法或属性等。为了解决这些问题,可以使用“范型参数约束”。 范型参数约束的语法格式如下: class ClassN…

    C# 2023年6月7日
    00
  • 哔哩哔哩Android项目编译优化

    哔哩哔哩Android项目编译优化 在Android开发中,编译时间是一个非常重要的因素。本文将介绍如何优化哔哩哔哩Android项目的编译时间。 步骤1:使用Gradle的Build Cache Gradle的Build Cache可以缓存已编译的文件,以便在下一次编译时重用它们。以下是一个示例: buildCache { local { enabled …

    C# 2023年5月15日
    00
  • jQuery Ajax调用WCF服务详细教程

    jQuery Ajax调用WCF服务详细教程 WCF(Windows Communication Foundation)是一种用于构建分布式应用程序的技术。在Web应用程序中,我们可以使用jQuery Ajax调用WCF服务来实现与服务器的通信。本文将详细讲解如何使用jQuery Ajax调用WCF服务,并提供两个示例。 1. 创建WCF服务 以下是创建WC…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部