windows - 异常原理与程序排错

异常处理不能改变程序无法正常运行的试试,但是给出具有参考价值的出错信息,并且能大大增强程序的健壮性
异常处理使用try,catch和finally关键词来尝试可能未成功的操作、处理失败以及时候清理资源。

  • try 语句块也可以嵌套,可以将代码的异常处理置于不同的子try语句块。
  • catch 代码块也可称作“异常筛选器“,可以有多个,每个catch块只是的异常类都是Exception类型或者其派生类型。
  • 多个catch块的补货顺序是从顶部到底部,对于所引发的每个异常,都只执行一个catch块,如果一系列的catch块所设定的异常类存在继承关系,会按照catch出现的顺序找到匹配的第1各类,并执行其相应的代码,而不再执行后续可以匹配的异常类 按照最先匹配处理,而不是按最佳匹配
  • finally语法块无论是否引发异常都会执行,可以使用finally 块清理在try块中执行的操作,例如释放资源(如文件流、数据库连接和图形句柄)finally块始终会执行,而与是否引发异常或者是否找到与异常类型匹配的catch块无关。
    异常类Exception具有几个非常有用的属性
  1. TargetSite 抛出异常的成员函数名
  2. Source 抛出异常的编译文件名
  3. Message 每个异常的缺省消息内容
  4. StackTrace 引起异常的调用堆栈路径,包含路径、文件和行信息

异常类应用示例

用户在TextBox控件中输入整数时,通过textBox的Text属性获得String对象,将string对象转换为整数值可使用Int32对象的Parse方法,它可能产生3个异常

异常名异常原因
ArgumentNullException参数为null
FormatException参数的格式不正确
OverflowException参数的值超出给定范围

.NET 平台内置异常类

NullReferenceExcetion异常类

.NET平台中的对象都派生自Object类,对象成员保存在内存中,Object类含有对成员的引用信息。Object类封装对成员的引用,对象在创建时分配成员的内存地址,对象的初始化就是对内存空间赋值。
如果对象没有初始化而调用对象的方法或属性时就会引发NullReferenceException了异常,它表明引用的内容为空。

InvaildCastException异常类

尝试取消装箱null或对不兼容值类型的引用导致InvaildCastException。这类异常的发生通常是开发人员在使用集合对象时,装入时的数据类型与取出时进行的类型转换不匹配造成的,例如咋恍如的是Int类型,取出时对其进行float的类型转换。

FormatException异常类

字符串转化为实际数字时可能产生FormatException异常,例如用户输入的是字母

程序的简单排错

编译器是基于词法或句法的检查发现代码错误的,但编译器不能领会开者的实际意图,对于算法和逻辑设计上的错误是无能为力的。编译成功可运行的程序也会包含结构错误。开发者不仅要反复调试运行自己的程序,还必须通过正确分析和反复验证才能生产合格的软件产品。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值