java 异常 ppt_第9章java异常.ppt

41528d3028836879cd698677c3999917.gif第9章java异常.ppt

Java 异常处理 1. 什么是异常 2. 异常的分类(Throwable 树) 3. 捕获和抛出异常 4. 处理异常和收尾工作 5. 声明自己的异常 6. 一些不好的习惯 7. 断言总览 • 这节课要掌握的知识点: 1.try, catch, finally, throw, throws 关键字用法 。 2. 运行时异常和非运行时异常的区别。 3. 异常通常的处理方式。 4. 时刻记住良好的编程习惯。 5. 了解断言机制。1. 异常的概念 • 异常是Java 处理程序中可能发生的错误的 一种机制,它可以使程序尽量从错误中恢 复。 • 设计良好的程序应该在异常发生时提供处 理这些异常的方法,从而使程序更健壮。 • 异常不是语法错误,它经常潜伏在代码里 ,在某个美妙的时刻与你偶遇并使你和你 的程序一起崩溃。Java 异常树Throwable Error StackOverflowError 各种奇形怪状Error… Exception RuntimeException NullPoinerException 各种其他运行时异常… IOException SQLException 各种其他非运行时异常…Throwable 分类 • Error ,多指JVM 发生的错误,如在Window 下的动态链接失败,程序导致的堆内存耗 尽,栈溢出等。一般的Error ,程序无法处 理,但是还应观察Error 是否因代码设计不 良而引发的。 • RuntimeException ,程序比较常见的异常 ,不强制你catch 它。 • 除RuntimeException 外的其他Exception , 程序强制你捕获这种异常。如何捕获异常 • 使用try{}catch{} 段来尝试执行try 块的代码, 如果执行出现异常,则执行catch 块。 如: String str = “123”; try {int i = Integer.parseInt(str); } catch(NumberatException e) {e.printStackTrace();// 也可以做别的操作 }异常的处理 • 对于程序员,打印异常栈很有用,也可以 记录异常日志。但对于客户,应该友好地 提示异常的发生以及可能引发异常的原因 。 • finally 关键字的用法。 • 如果有重要代码无论是否发生异常都要执 行,则应该放在finally 块中。 • 鞠老师讲过final ,不要把finally 和它混淆, 它们并没有直接联系。 • 如果在当前条件下不便处理,可以抛出异 常以让调用方决定如何处理。异常堆栈 • e.printStackTrace(); 打印的就是异常堆栈。 注意打印信息中的行号。 • 异常堆栈记录下抛出异常的方法被调用的 全部路径,便于程序员找异常在哪些地方 发生。捕获异常的方式 • 先捕获子类异常,再捕获父类 • 尽量使异常细化,即不要使用高层次异常 使低层次异常被屏蔽。 • 捕获异常后千万不要忽略它。忽略它比不 捕获它更可恶。 • 可以在一个try 块后面使用多个catch 块捕获 多个不同的异常如何抛出异常 • 一些RuntimeException ,由JVM 抛出,我 们不理会它。 • 在需要抛出异常的地方使用throw 关键字抛 出异常。 • 方法抛出异常使用throws ,在方法内不知道 如何处理这个异常的话则抛出方法外,由 调用它的方法决定如何处理。如何声明自己的异常 • 在JDK 提供的异常种类满足不了需求的时候 ,我们应该提供自己的异常。 • 很简单,你可以继承自Exception ,或者 RuntimeException 来声明自己的异常。 • 自己的异常可以像JDK 的异常一样使用。一些不好的习惯 • 不要捕获后不对异常做任何处理。这叫做忽 略异常,极不利于调试代码,哪怕你在catch 块中打印出一句话也好。 • 不要把重要代码放在可能引发异常的句子后 面。这样如果异常发生,则重要代码被忽略 。可以选择的做法是放进finally 块或者放出 try 块。 • 尽量不要使用父类异常屏蔽子类异常。 • 不要一直由方法抛出异常而不处理它,直到 抛出main 方法。这叫“ 异常逃逸” 。断言机制 • 断言通常用于调试,基本语法是:assert ( 布尔表达式); 如果布尔表达式为假,则抛出错误。 • 断言机制了解下就可以了。总结 1. 感谢国家。 2. 五个关键字用法。 3. 处理异常的一般方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值