C#异常处理详解
异常介绍
1、System.Exception类
Message属性:发生异常的原因和异常的内容
Souce属性:抛出异常程序集的名称
StackTrace属性:发生异常的方法调用情况
InnerException属性:次异常中包含的异常
2、try{}catch{}finally{}
处理异常
a、不带参数的catch和catch(Exception)是有区别的
catch(Exception)可以捕获所有以Exception类派生的异常,而不带参数的catch可以捕获所有异常,不管异常是不是从Exception类派生。
b、与catch配套的catch和finally是可选的,但二者必选其一。一个try可对应多个catch,但一个try只能对应一个finally。
c、不论try中是否发生异常,finally中的语句一定会被执行。
异常传播
如果异常发生后,没有被相应的catch捕获,那么异常将沿调用堆栈逐渐向上传递,直到遇到合适的catch语句或传递到最底层的调用方法为止。如都没有找到相应的catch,则异常交付.net公共语言运行时,公共语言运行时弹出一个对话框来显示异常信息。
抛出异常throw
1、throw变量名;
必须是Exception异常或有Exception派生的类型
2、throw;
这个throw语句只有一个throw关键字,只能用在catch语句块中,该语句的意思是抛出当前catch语句所捕获的异常。
自定义异常
遵循原则
1、避免使用深的异常类继承层次结构
2、自定义异常类必须继承System.Exception类或其他几种基本常见异常类
3、自定义异常类名称要以Exception结尾
4、自定义异常类应该可以序列化
5、自定义异常类应该至少实现与Exception类相同的以下四个构造函数
publicMyException(){}
publicMyException(stringmessage){}
publicMyException(stringmessage,Exceptioninner){}
protectedMyException(System.Runtime.Serialization.SerializationInfoinfo,System.Runtime.Serialization.StreamingContextcontext){}
6、自动插入自定义异常类框架
在编辑器中输入Exception并按键,即可得到自定义异常类框架。
相关文章
- C#-TextBox-登录窗口密码不可见—ShinePans[通俗易懂]
- asp.net(C#)中Repeater嵌套绑定Repeater[通俗易懂]
- c# mysql executenonquery_C#与数据库访问技术之ExecuteNonQuery方法
- C#应用Newtonsoft.Json操作json[2]-反序列化不定类型详解编程语言
- EffectiveC#使用成员初始化器而不是赋值语句
- C#WinForm捕获全局变量异常SamWang解决方法
- C#定义常量两种实现方法
- C#将字节流转换为图片的实例方法
- C#正则表达式分解和转换IP地址实例(C#正则表达式大全c#正则表达式语法)
- C#异常处理的一些经验和技巧
- c#实现把异常写入日志示例(异常日志)
- 浅析C#的复制和克隆