动手动脑10.14
一.Java中实现异常处理的基础知识。
二.使用Java异常处理机制
1.把可能会发生错误的代码放进try语句块中。
2.当程序检测到出现了一个错误时会抛出一个异常对象。异常处理代码会捕获并处理这个错误。 catch语句块中的代码用于处理错误。
3.当异常发生时,程序控制流程由try语句块跳转到catch语句块。
4.不管是否有异常发生,finally语句块中的语句始终保证被执行。
5.如果没有提供合适的异常处理代码,JVM将会结束掉整个应用程序。
三.Java中的异常分类
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语句块中也可能发生异常,如果这种情况发生,先前的异常被放弃。
六.动手动脑1:多层的异常捕获-1:运行结果
七.动手动脑:多层的异常捕获-2:运行结果
八.动手动脑
当有多层嵌套的finally时,异常在不同的层次抛出 ,在不同的位置抛出,可能会导致不同的finally语句块执行顺序, 先执行内层异常和finally ,在执行外层异常finally ,但是有抛出异常只显示最外层的.
九.动手动脑
在捕获异常的try…catch…finally 语句中,我们可以将try的部分看做是if,如果有异常,则进行catch部分;而catch部分则像switch语句中的case1,case2,根据捕获的异常类型选择执行哪个catch部分;而最后的finally部分,一般情况下无论程序是否执行了catch部分,均会执行.
try…catch…finally语句中的finally部分除非是电脑关机、停电等问题或程序被中途关闭,否则必定运行,在finally语句以外的部分存在return关键字的时候,尽管return会结束方法,但是finally会在return进行复制和return进行返回操作之间执行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下