码迷,mamicode.com
首页 > 其他好文 > 详细

第八周动手动脑

时间:2018-11-11 17:18:49      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:实现   ima   检测   owa   技术   throwable   代码块   不同   一个   

1.请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识。

技术分享图片

技术分享图片

处理机制:把可能发生错误的代码放入try语句块中,当程序检测到出现了一个错误时会抛出一个异常对象。异常处理代码会捕获并处理这个错误(catch语句块中的代码用于处理错误)。当异常发生时,程序控制流程由try语句块跳转到catch语句块。不管是否有异常发生,finally语句块中的语句始终保持被执行。如果没有提供合适的异常处理代码,JVM将会结束掉整个应用程序。

异常分类:Throwable类有两个直接子类: Exception:出现的问题是可以被捕获的; Error:系统错误,通常由JVM处理。 可捕获的异常又可以分为两类: (1)Check异常:直接派生自Exception的异常类,必须被捕获或再次声明抛出 (2)Runtime异常:派生自RuntimeException的异常类。使用throw语句可以随时抛出这种异常对象: throw new ArithmeticException(…);

技术分享图片

异常多态特性

可以有多个catch语句块,每个代码块捕获一种异常。在某个try块后有两个不同的catch 块捕获两个相同类型的异常是语法错误。 使用catch语句,只能捕获Exception类及其子类的对象。因此,一个捕获Exception对象的catch语句块可以捕获所有“可捕获”的异常。 将catch(Exception e)放在别的catch块前面会使这些catch块都不执行,因此Java不会编译这个程序。

finally的功能

资源泄露:当一个资源不再被某应用程序使用,但此程序并未向系统声明不再使用此资源时发生这种情况 finally语句块主要用于解决资源泄露问题,它位于catch语句块之后,JVM保证它们一定执行。 注意:finally语句块中也可能发生异常,如果这种情况发生,先前的异常被放弃。

2.多层的异常捕获-1

阅读以下代码(CatchWho.java),写出程序运行结果:

技术分享图片

3.多层的异常捕获-2

 写出CatchWho2.java程序运行的结果

技术分享图片

4.当有多个嵌套的try…catch…finally时,要特别注意finally的执行时机。

请先阅读 EmbedFinally.java示例,再运行它,观察其输出并进行总结。

技术分享图片

当有多层嵌套的finally时,异常在不同的层次抛出    ,在不同的位置抛出,会导致不同的finally语句块执行顺序。

 5.finally语句块一定会执行吗?

技术分享图片

不一定会执行finally语句块。

当存在try中有throw new Exception(...)finally不会执行。

 

第八周动手动脑

标签:实现   ima   检测   owa   技术   throwable   代码块   不同   一个   

原文地址:https://www.cnblogs.com/zhoulonghai/p/9942600.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!