第五次课堂总结
1.本节课开始编写一段代码
由循环和if语句组成的判断分数
之后老师让相互找错
因没有规定输入限制,导致整型变量输入数据为字符使其崩溃报错
由此引出本章的内容异常处理
2.异常处理异常处理的目的是依据实际情况提供不同的错误应对策略与手段,使程序更稳定,更安全。
异常处理的主要用途是提供准确的错误消息,解释失败的原因、位置和错误类型等,同时提供一定的恢复能力,尽可能地保证数据完整性不被破坏,并让程序能继续运行。
把可能会发生错误的代码放进try语句块中。
当程序检测到出现了一个错误时会抛出一个异常对象。异常处理代码会捕获并处理这个错误。catch语句块中的代码用于处理错误。
当异常发生时,程序控制流程由try语句块跳转到catch语句块。不管是否有异常发生,finally语句块中的语句始终保证被执行。如果没有提供合适的异常处理代码,JVM将会结束掉整个应用程序。
Throwable类有两个直接子类:Exception:出现的问题是可以被捕获的;Error:系统错误,通常由JVM处理。
可捕获的异常又可以分为两类:(1)Check异常:直接派生自Exception的异常类,必须被捕获或再次声明抛出(2)Runtime异常:派生自RuntimeException的异常类。使用throw语句可以随时
出这种异常对象:throw new ArithmeticException(…);
3.异常多态特性
可以有多个catch语句块,每个代码块捕获一种异常。在某个try块后有两个不同的catch 块捕获两个相同类型的异常是语法错误。使用catch语句,只能捕获Exception类及其子类的对象。
因此,个捕获Exception对象的catch语句块可以捕获所有“可捕获”的异常。将catch(Exception e)放在别的catch块前面会使这些catch块都不执行,因此Java不会编译这个程序。
4.finally公用
资源泄露:当一个资源不再被某应用程序使用,但此程序并未向系统声明不再使用此资源时发生这种情况finally语句块主要用于解决资源泄露问题,
它位于catch语句块之后,JVM保证它们一定执行。注意:finally语句块中也可能发生异常,如果这种情况发生,先前的异常被放弃。
5.java7内容
6.实验内容
in Level 1
in Level 2
in Level 3
Level 3:class java.lang.ArithmeticException
In Level 3 finally
In Level 2 finally
In Level 1 finally
对于try语句内部嵌套try语句,执行完内部的try catch语句,不会向外层的try-catch语句抛出异常,继续按照顺序执行。
finally语句不一定会执行,若在catch语句强制退出exit(0)则不会执行finally语句。
7.throws语句
throws语句表明某方法中可能出现某种(或多种)异常,但它自己不能处理这些异常,而需要由调用者来处理。 当一个方法包含throws子句时,
需要在调用此方法的代码中使用try/catch/finally行捕获,或者是重新对其进行声明,否则编译时报错。
throws语句中声明的异常称为受控(checked)的异常,通常直接派生自Exception类。 RuntimeException(其基类为Exception) 和Error(基类为Throwable)称为非受控的异常。
这种异常不用在throws语句中声明。
8异常处理模板
9.抛出多个异常方法
10.子类抛出受控异常的限制
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南