C#中常见的异常类有哪些?

C#学习笔记——I/O类、异常捕获 C#学习笔记——File类及其操作一、Path类方法二级目录三级目录 一、Path类方法 该方法主要获取路径、文件夹名称等 using System; using System.Collections.Generic; using System.IO; using System.Text; namespace LIST { class PathClass { static void Main() { //获取文件的扩展名 阅读详情

C# 中提供了丰富的异常类,这些类主要继承自 System.Exception 基类,可根据错误场景分为多个类别。以下是常见的异常类及其适用场景:
在这里插入图片描述

一、系统基础异常(继承自 System.SystemException)

这类异常与 .NET 运行时或系统操作相关,反映底层运行环境的错误。

  1. NullReferenceException

    • 最常见的异常之一,当尝试访问 null 对象的成员时抛出。
    • 示例:string s = null; int len = s.Length;(s 为 null 时抛出)。
  2. IndexOutOfRangeException

    • 访问数组、集合时索引超出有效范围时抛出。
    • 示例:int[] arr = {1,2,3}; int val = arr[3];(数组长度为 3,有效索引为 0-2)。
  3. ArgumentOutOfRangeException

    • 方法参数值超出允许范围时抛出(与 IndexOutOfRangeException 的区别:前者针对参数,后者针对数组索引)。
    • 示例:List<int> list = new List<int>(); list.Insert(5, 10);(列表为空时插入索引 5 无效)。
  4. ArgumentException(及子类)

    • 方法参数无效时的基类,常用子类:
      • ArgumentNullException:参数为 null 但不允许为 null 时(如 string 参数必填)。
      • ArgumentOutOfRangeException:参数值超出范围(上文已提及)。
    • 示例:void SetAge(int age) { if (age < 0) throw new ArgumentOutOfRangeException(nameof(age)); }。
  5. InvalidOperationException

    • 当对象状态不适合执行当前操作时抛出。
    • 示例:对未打开的 FileStream 调用 Read() 方法;迭代集合时修改集合(如 foreach 中 Add/Remove)。
  6. NotSupportedException

    • 调用不支持的方法或操作时抛出。
    • 示例:对只读集合调用 Add() 方法。
  7. NotImplementedException

    • 方法尚未实现时的临时占位异常(常用于接口实现的草稿阶段)。
    • 示例:public void Save() { throw new NotImplementedException("保存功能待实现"); }。

二、IO 相关异常(继承自 System.IO.IOException)

处理文件、流、目录等操作时的错误。

  1. FileNotFoundException

    • 尝试访问不存在的文件时抛出。
    • 示例:File.ReadAllText("不存在的文件.txt")。
  2. DirectoryNotFoundException

    • 目录不存在时抛出(如操作路径中的目录无效)。
  3. PathTooLongException

    • 文件或目录路径长度超过系统限制时抛出(如 Windows 中路径通常不能超过 260 字符)。
  4. IOException(基类)

    • IO 操作失败的通用异常,其他 IO 异常均继承自它(如文件被占用、权限不足等)。

三、类型与转换相关异常

处理数据类型转换或类型操作时的错误。

  1. InvalidCastException

    • 类型转换失败时抛出(通常发生在显式类型转换)。
    • 示例:object obj = "123"; int num = (int)obj;(字符串无法直接转为 int)。
  2. FormatException

    • 数据格式不符合预期时抛出(如字符串转数字失败)。
    • 示例:int.Parse("abc")(“abc” 不是有效整数格式)。
  3. OverflowException

    • 转换或运算结果超出目标类型范围时抛出(如整数溢出)。
    • 示例:int.MaxValue + 1(需在 checked 上下文才会抛出,默认可能不抛)。

四、集合与字典相关异常

针对集合、字典等数据结构的操作错误。

  1. KeyNotFoundException

    • 访问字典中不存在的键时抛出。
    • 示例:Dictionary<string, int> dict = new Dictionary<string, int>(); var val = dict["key"];。
  2. InvalidOperationException(集合场景)

    • 集合状态不允许操作时抛出,如:
      • 对只读集合调用 Add()。
      • 迭代 List 时调用 RemoveAt()。

五、网络相关异常(System.Net 命名空间)

处理网络操作时的错误。

  1. WebException

    • HTTP 请求或网络操作失败时抛出(如连接超时、404 错误)。
    • 示例:new WebClient().DownloadString("https://无效地址.com")。
  2. SocketException

    • 底层套接字操作失败时抛出(如端口被占用、连接被拒绝)。

六、其他常见异常

  1. DivideByZeroException

    • 整数除法中除数为 0 时抛出(浮点数除法会得到 Infinity,不抛此异常)。
    • 示例:int result = 10 / 0;。
  2. OutOfMemoryException

    • 内存不足,无法分配新对象时抛出(严重错误,通常难以恢复)。
  3. StackOverflowException

    • 栈溢出(如无限递归调用)时抛出(无法被 try/catch 捕获,会直接终止程序)。

总结

C# 的异常类设计遵循“具体场景具体异常”的原则,使用时应:

  1. 抛出具体异常:避免直接抛出 Exception,而是选择最匹配的子类(如参数为 null 时抛 ArgumentNullException)。
  2. 针对性捕获:根据业务场景捕获特定异常(如文件操作捕获 FileNotFoundException),避免滥用 catch (Exception)。
  3. 查看文档:不确定方法会抛出哪些异常时,可参考 .NET 官方文档(如 File.ReadAllText 的文档会说明可能抛出的异常)。

通过合理使用异常类,能让错误信息更清晰,便于调试和问题定位。

C#异常类型全面解析:从系统异常到自定义实现的最佳实践(JAVA可参考) 通过继承Exception类实现,需提供三个构造函数:csharp。 阅读详情

相关推荐

掌握程序异常处理:自定义异常类与异常再抛出

本文深入探讨了在C#中处理程序异常的策略,包括框架内定义的常见异常、自定义异常类的创建与使用,以及异常的再抛出。通过具体的代码示例,展示了如何在程序中有效地捕获、处理和重新抛出异常,以提高程序的健壮性和用户体验。

weixin_42360846的博客 320

【C# 基础精讲】异常的类型和处理方法

除了系统异常,您还可以根据需要创建自定义异常类,以便在特定情况下引发并捕获异常。自定义异常类通常是从Exception类派生而来,您可以为其添加自定义的属性和方法。在程序中,您可以使用throw对于特定的业务逻辑或应用,可以创建自定义异常类来提供更有意义的异常信息,方便调试和处理。异常处理是编程中的重要部分,用于捕获和处理程序运行时可能发生的错误情况,以确保程序的稳定性和健壮性。在C#中,您可以使用try-catch块、finally块和throw关键字来实现异常处理。

繁依Fanyi的博客 3973

QGIS效率提升神器:qgis_mcp插件+VSCode联合工作流配置全解析

本文详细解析了如何通过配置qgis_mcp插件与VSCode的联合工作流,实现语音控制和代码自动化来大幅提升QGIS操作效率。该方案将自然语言交互与现代编辑器生态结合,为地理信息专业人士构建了智能、高效的全新工作模式,彻底改变传统GIS操作方式。

weixin_29228203的博客 190

C#异常类相关总结

C#异常类相关总结

YuYuLingYan的博客 1929

国税局发票查验中英文验证码识别最新版,识别率99.9%

采用深度学习进行发票查验验证码模型的训练,在我电脑上模型训练的环境如下: 显卡:RTX 2080TI tensorflow-gpu:2.5.3 1 训练集和测试集的准备 发票查验的验证码分为4种类型,分别为黑色、红色、黄色、蓝色,经过我的测试,采用4个模型的效果最好,每个模型对应识别一种类型的验证码。 首先我们4种类型的验证码都准备10万张。 00黑色类型的验证码: 01红色类型的验证码: 02黄色类型的验证码: 03蓝色类型的验证码: 验证码图像图像准备好后,对其进行标记,也就是对验证码重命名:

Keras深度学习 83万+

新手小白 必须精进的 “ FLASH分区管理Code and Data ” !!!最强文章解析!!!

FLASH“代码区”和“数据区”不是每个项目都必须显式管理,但只要你的产品功能越来越丰富,对可靠性和扩展性要求提高,就一定要学会科学划分和使用。这也是嵌入式工程师进阶路上的必修课!

qq_75157958的博客 933

Controller 层返回值的公共包装类-避免每次都包装一次返回-InitializingBean增强

场景:在微服务中,一般返回数据都会有个返回码、返回信息和返回消息体,但是每次返回时候调用或者是封装,太过麻烦,有没有什么办法不用每次都封装呢? 答案是有的。 返回值对象 package com.study.auth.comm; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.serializer.Serialize..

hu10131013的博客 10万+

11. TI MSPM0G3507 DMA传输实战:ADC数据自动搬运与电压采集

本文以TI MSPM0G3507为例,详细讲解了如何利用DMA(直接存储器访问)实现ADC数据的自动搬运与电压采集。通过实战演示,解放CPU资源,提升系统实时性与效率,适用于电赛备赛及嵌入式开发中的数据采集场景。

weixin_42465140的博客 131

C#中常见异常类

 C#中常见异常类     Exception:所有异常对象的基类。          SystemException:运行时产生的所有错误的基类。          IndexOutOfRangeException:当一个数组的下标超出范围时运行时引发。          NullReferenceException:当一个空对象被引用时运行时引发。          InvalidOperat

brightdoll的专栏 528

单片机控制双向可控硅的5种实用触发电路设计(附完整电路图)

本文深入解析了单片机控制双向可控硅的5种实用触发电路设计,涵盖从基础隔离到复杂负载驱动的实战方案。重点探讨了光电耦合器选型、过零检测同步、RC吸收电路精密计算以及应对感性负载和高噪声环境的加固策略,并提供了完整的电路图与调试避坑指南,旨在帮助开发者实现安全可靠的交流负载控制。

joy55的博客 2209

MATLAB演示元胞自动机算法

一、元胞自动机理论 元胞自动机与格子理论是一个非常好的模型,许多复杂的问题都可以通过它来建立模型,下面就简要介绍一下。 元胞自动机 实质上是定义在一个具有离散、有限状态的元胞组成的元胞空间上,并按照一定的局部规则,在离散的时间维度上演化的动力学系统。 元胞 元胞又可称为单元、细胞,是元胞自动机的最基本的组成部分。 元胞具有以下特点: 元胞自动机最基本的单元。 元胞有记忆贮存状态的功...

frange zone 2万+

C#常见的异常类

<br />常见的异常类<br /> 1、System.ArithmeticException<br /> 算术运算操作所引发异常的基类<br /> 2、System.ArrayTypeMismatchException<br /> 当存储一个数组时,如果由于被存储的元素的实际类型与数组的实际类型不兼容而导致存储失败,就会引发此异常<br /> 3、System.DivideByZeroException<br /> 当除数为零时引发<br />4、System.IndexOutOfRangeExcepti

342

pip install安装markitdown时出现ERROR: ‘packages/markitdown[all]‘ is not a valid editable requirement解决方案

本文主要介绍了pip install安装markitdown时出现ERROR: ‘packages/markitdown[all]’ is not a valid editable requirement解决方案,希望能对使用markitdown的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 2万+

c#中常见的异常类型

1.SystemException:这个类提供系统异常和应用程序异常之间的区别。 2.SystemSQLException:当SQL server返回警告或者错误时引发的异常。3.ArgumentNullException.当将空引用传递给不接受他作为有效参数的方法时引发的异常。4.FileNotFoundException.试图访问磁盘上不存在的文件失败时引发的异常。5.ApplicationException:在应用程序执行过程中检测到由应用程序定义的异常。 ...

weixin_45667658的博客 1206

【系统架构设计师】2025年下半年真题论文回忆版及写作要点

本文摘要围绕云原生数据库、性能测试、无服务器架构和秒杀场景等关键技术进行论述。云原生数据库通过容器化、微服务和自动化运维实现弹性扩展;性能测试需要规划测试场景并关注响应时间等关键指标;无服务器架构以事件驱动为核心,简化开发流程;秒杀场景需组合运用扩容、缓存、限流等技术应对高并发。这些技术方案为构建现代高可用系统提供了重要参考。

数据知道的博客 6156

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C#中常见异常类

    Exception:所有异常对象的基类。   SystemException:运行时产生的所有错误的基类。   IndexOutOfRangeException:当一个数组的下标超出范围时运行时引发。   NullReferenceException:当一个空对象被引用时运行时引发。   InvalidOperationException:当对方法的调用对对象的当前状态无效时,由...

weixin_34110749的博客 116

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C#常见异常类型总结

为什么80%的码农都做不了架构师?>>> ...

weixin_33896069的博客 346

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C# 异常处理机制和常见的异常类型

在 C# 中,异常处理是一个非常重要的概念,它可以让我们在程序发生错误时进行有效的处理,使程序具备更好的鲁棒性。在上面的代码中,try 块中的代码可能会抛出一些异常,如果发生异常,则会进入到相应的 catch 块中进行处理。总之,在 C# 中,异常处理是一项非常重要的任务,我们需要根据实际情况进行合理的异常处理,以保证程序的正常运行。除了上述常见的异常类型外,还有很多其他的异常类型,我们可以根据实际需要选择合适的异常类型进行处理。

無限進步的全棧遊戲開發的博客 1835

C#编程语言之常见的异常类型

《C# 6.0 本质论》中文第5版 P138

ctrigger的专栏 241

C#中常用异常类总结

C#异常类一、基类Exception C#异常类二、常见的异常类 1、SystemException类:该类是System命名空间中所有其他异常类的基类。(建议:公共语言运行时引发的异常通常用此类) 2、ApplicationException类:该类表示应用程序发生非致命错误时所引发的异常(建议:应用程序自身引发的异常通常用此类) C#异常类三、与参数有关的异常类 此类异常类均派生于S

Sev_ran的专栏 5266

异常类型 描述(C#)

异常类型 描述 Exception 所有异常对象的基类SystemException 运行时产生的所有错误的基类IndexOutOfRangeException 当一个数组的下标超出范围时运行时引发NullReferenceException 当一个空对象被引用时运行时引发InvalidOperationException 当对方法的调用对对象的当前状态无效时,由某些方法引发ArgumentExc

zhiduoxing的专栏 1203

c#中常用的异常类型

c#中常用的异常类型

kodmoqn的博客 132

C#异常类

C#异常类1、通用异常类下面的异常被某些C#操作抛出System.OutOfMemoryException :当试图通过new来分配内存而失败时抛出。System.StackOverflowException :当执行栈被太多未完成的方法调用耗尽时抛出;典型情况是指非常深和很大的递归。System.NullReferenceException :当null引用在造成引用的对

lengyuhong的专栏 5726

C# 中的异常类有哪些?

System.ApplicationException 和 System.SystemException 类是派⽣于 System.Exception 类的异常。System.ApplicationException 类⽀持由应⽤程序⽣成的异常,所以我们⾃⼰定义的异常都应派⽣⾃该。System.IndexOutOfRangeException ⽤于处理当⽅法指向超出范围的数组索引时⽣成的错误。C# 异常是使⽤类来表示的,异常类主要是直接或间接地派⽣于 System.Exception 类。

qq_61141142的博客 273

C#学习笔记13——异常处理

一、概念异常是程序执行时遇到的任何错误情况或意外行为。以下这些情况都可以引发异常:您的代码或调用的代码(如共享库)中有错误,操作系统资源不可用,公共语言运行库遇到意外情况(如无法验证代码),等等。对于这些情况,应用程序可以从其中一些恢复,而对于另一些,则不能恢复。尽管可以从大多数

深之JohnChen的专栏 3354

C#异常类总结

http://msdn.microsoft.com/zh-cn/library/aa664610(v=vs.71).aspx C#异常类相关总结 C#异常类一、基类Exception C#异常类二、常见的异常类 1、SystemException类:该类是System命名空间中所有其他异常类的基类。(建议:公共语言运行时引发的异常通常用此类) 2、ApplicationException...

weixin_33895016的博客 87
上一篇: Ocelot VS Nginx
下一篇: 处理异常时,finally关键字有什么作用?
东百牧码人
博客等级 码龄12年 511粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值