C#异常处理总结及简单实例
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#异常处理总结及简单实例
本文地址:https://www.xiuzhanwang.com/a1/C_jiaocheng/5685.html
您可能感兴趣的文章
- 01-10Extjs4如何处理后台json数据中日期和时间
- 01-10c# ArrayList的使用方法小总结
- 01-10C#实现子窗体与父窗体通信方法实例总结
- 01-10C#获取客户端相关信息实例总结
- 01-10C#处理Access中事务的方法
- 01-10C#图片处理3种高级应用
- 01-10轻松学习C#的正则表达式
- 01-10轻松学习C#的异常处理
- 01-10杂谈try-catch-finally异常处理
- 01-10再谈异常处理try catch finally
阅读排行
本栏相关
- 01-10C#通过反射获取当前工程中所有窗体并
- 01-10关于ASP网页无法打开的解决方案
- 01-10WinForm限制窗体不能移到屏幕外的方法
- 01-10WinForm绘制圆角的方法
- 01-10C#实现txt定位指定行完整实例
- 01-10WinForm实现仿视频播放器左下角滚动新
- 01-10C#停止线程的方法
- 01-10C#实现清空回收站的方法
- 01-10C#通过重写Panel改变边框颜色与宽度的
- 01-10C#实现读取注册表监控当前操作系统已
随机阅读
- 04-02jquery与jsp,用jquery
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-10SublimeText编译C开发环境设置
- 01-10C#中split用法实例总结
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 01-11ajax实现页面的局部加载
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-10delphi制作wav文件的方法
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 08-05织梦dedecms什么时候用栏目交叉功能?