C#异常处理总结及简单实例

发布时间 - 2026-01-11 01:49:26    点击率:

C#异常处理总结及简单实例

一、异常处理的理解?

异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常。

因此处理这种错误,就称为异常处理。

二、异常处理如何操作?

C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。

1、try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。

2、catch:程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。

3、finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。

例如如果你打开一个文件,不管是否出现异常文件都要被关闭。

4、throw:当问题出现时,程序抛出一个异常。使用 throw 关键字来完成。

语法示例:

try

{

  // 引起异常的语句

}

catch( ExceptionName e1 )

{

  // 错误处理代码

}

catch( ExceptionName e2 )

{

  // 错误处理代码

}

catch( ExceptionName eN )

{

  // 错误处理代码

}

finally

{

  // 要执行的语句

}

三、C#中的异常类

C# 异常是使用类来表示的。C# 中的异常类主要是直接或间接地派生于System.Exception

(1).由System.SystemException派生的异常类型:

System.AccessViolationException 在试图读写受保护内存时引发的异常。

System.ArgumentException 在向方法提供的其中一个参数无效时引发的异常。

System.Collections.Generic.KeyNotFoundException 指定用于访问集合中元素的键与集合中的任何键都不匹配时所引发的异常。

System.IndexOutOfRangeException 访问数组时,因元素索引超出数组边界而引发的异常。

System.InvalidCastException 因无效类型转换或显示转换引发的异常。

System.InvalidOperationException 当方法调用对于对象的当前状态无效时引发的异常。

System.InvalidProgramException 当程序包含无效Microsoft中间语言(MSIL)或元数据时引发的异常,这通常表示生成程序的编译器中有bug。

System.IO.IOException 发生I/O错误时引发的异常。

System.NotImplementedException 在无法实现请求的方法或操作时引发的异常。

System.NullReferenceException 尝试对空对象引用进行操作时引发的异常。

System.OutOfMemoryException 没有足够的内存继续执行程序时引发的异常。

System.StackOverflowException 挂起的方法调用过多而导致执行堆栈溢出时引发的异常。

(2).由System.ArgumentException派生的异常类型:

System.ArgumentNullException 当将空引用传递给不接受它作为有效参数的方法时引发的异常。

System.ArgumentOutOfRangeException 当参数值超出调用的方法所定义的允许取值范围时引发的异常。

(3).由System.ArithmeticException派生的异常类型:

System.DivideByZeroException 试图用零除整数值或十进制数值时引发的异常。

System.NotFiniteNumberException 当浮点值为正无穷大、负无穷大或非数字(NaN)时引发的异常。

System.OverflowException 在选中的上下文中所进行的算数运算、类型转换或转换操作导致溢出时引发的异常。

(4).由System.IOException派生的异常类型:

System.IO.DirectoryNotFoundException 当找不到文件或目录的一部分时所引发的异常。

System.IO.DriveNotFoundException 当尝试访问的驱动器或共享不可用时引发的异常。

System.IO.EndOfStreamException 读操作试图超出流的末尾时引发的异常。

System.IO.FileLoadException 当找到托管程序却不能加载它时引发的异常。

System.IO.FileNotFoundException 试图访问磁盘上不存在的文件失败时引发的异常。

System.IO.PathTooLongException 当路径名或文件名超过系统定义的最大长度时引发的异常。

(5).其他常用异常类型:  

ArrayTypeMismatchException 试图在数组中存储错误类型的对象。

BadImageFormatException 图形的格式错误。

DivideByZeroException 除零异常。

DllNotFoundException 找不到引用的dll。

FormatException 参数格式错误。

MethodAccessException 试图访问私有或者受保护的方法。

MissingMemberException 访问一个无效版本的dll。

NotSupportedException 调用的方法在类中没有实现。

PlatformNotSupportedException 平台不支持某个特定属性时抛出该错误。

四、示例

class MyExceptionTest

{

  static double SafeDivision(double x, double y)

  {

    if (y == 0)

      throw new System.DivideByZeroException();

    return x / y;

  }

  static void Main()

  {

    double a = 98, b = 0;

    double result = 0;

    try

    {

      result = SafeDivision(a, b);

      Console.WriteLine("{0} divided by {1} = {2}", a, b, result);

    }

    catch (DivideByZeroException e)

    {

      Console.WriteLine("Attempted divide by zero.");

    }

  }

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# C#异常处理总结  # C#异常处理  # C#中类的异常处理详解  # 总结C#处理异常的方式  # C#异常处理知识汇总  # C#异常处理的技巧和方法  # C#异常处理中try和catch语句及finally语句的用法示例  # 详解C#编程中异常的创建和引发以及异常处理  # 浅谈C#中简单的异常引发与处理操作  # 轻松学习C#的异常处理  # C#异常处理的一些经验和技巧  # C#异常处理详解  # C#各种异常处理方式总结  # 关键词  # 抛出  # 找不到  # 如果你  # 都不  # 都要  # 多个  # 浮点  # 是指  # 中有  # 希望能  # 将被  # 不支持  # 现时  # 其中一个  # 谢谢大家  # 来完成  # 不接受  # 值为  # 发生错误 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel路由怎么定义_Laravel核心路由系统完全入门指南  网站页面设计需要考虑到这些问题  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  如何用JavaScript实现文本编辑器_光标和选区怎么处理  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  Laravel API资源类怎么用_Laravel API Resource数据转换  Android滚轮选择时间控件使用详解  如何快速生成专业多端适配建站电话?  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  浅析上传头像示例及其注意事项  如何在阿里云高效完成企业建站全流程?  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  Windows Hello人脸识别突然无法使用  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  使用Dockerfile构建java web环境  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  如何在阿里云ECS服务器部署织梦CMS网站?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  动图在线制作网站有哪些,滑动动图图集怎么做?  长沙企业网站制作哪家好,长沙水业集团官方网站?  Laravel如何优化应用性能?(缓存和优化命令)  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  轻松掌握MySQL函数中的last_insert_id()  jQuery中的100个技巧汇总  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Laravel如何实现一对一模型关联?(Eloquent示例)  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  如何在Ubuntu系统下快速搭建WordPress个人网站?  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  ,网页ppt怎么弄成自己的ppt?  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  如何解决hover在ie6中的兼容性问题  如何续费美橙建站之星域名及服务?  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  如何正确下载安装西数主机建站助手?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何快速重置建站主机并恢复默认配置?  制作企业网站建设方案,怎样建设一个公司网站?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何做网站制作流程,*游戏网站怎么搭建?