2022-7-29 第八组 曹雨
异常
- 类型转换异常
- 数字格式化
- 算数异常
编程界:
- 除数为0;
- IO流,没有关闭
- 停电
当一个程序抛出异常时,抛异常后面的语句不再执行,类似于return的功能,终止方法的执行。
try..catch:
try{
//把有可能抛异常的代码放在try语句块里
}catch(Exception e){
//打印异常信息。
e.printStackTrace(".....");
}
一旦出现异常,就会跳到catch。可以说就把这个异常解决了。
跳到catch后,后面的代码正常走。
如果有代码特别重要,无论如何都得走,可以放在try catch外面。
为了应对多中异常,可以写很多catch来应对。但是有顺序,小的写上面,大的写在最下面。
异常的继承体系结构。
最顶级的异常类Thorwable:
已知子类:
错误Error:正常情况下,不太可能出现的。绝大多数的Error都会导致程序处于非正常的状态下,很难恢复。一般就是你代码写错了
异常Exception:在Java语言中,将程序执行中发生的不正常的情况称之为异常。
异常又可以分为:
- Exception编译期异常:写代码的时候抛异常,如果编译器不解决,会编译不通过,一直爆红。
在一个语句块中,如果使用throw抛出一个编译期异常,就必须在方法的声明处使用throws关键字
或者直接使用try catch - RuntimeException运行期1c 异常:只在运行时抛异常。
自定义异常:
Java中异常机制,但是结合实施业务。
- 所有异常必须是Throwable的子类(大材小用)
- 如果要定义一个编译型异常,需要继承Exception类
- 如果要定义一个运行期异常
throws语句可以当作一种返回值
异常链
一个异常被抛出去后,会继续被调用这个方法的方法捕获或抛出,异常会扩散。
//A有异常,B调用A,C调用B
class A{
public void a(){
throw new ServiceException("业务异常")
}
}
class B
public void b(){
A aa = new A();
aa.a();
}
}
class C{
public void c(){
B bb = new B();
bb.b{}
}
}
我们要在B里用try catch把异常干掉:
try{
aa.a()
}catch(){
}
只要处理异常/把异常解决掉,就时try catch。
如果一个方法没有捕获一个编译器异常,该方法必须是使用throws来声明。
throws很不负责任
public class Ch2 {
//show()抛了一个异常
public void show()throws Exception {
}
//如果info()不管,继续抛
public void info() throws Exception{
show();
}
//只能让主方法管
public static void main(String[] args) {
try {
new Ch2().info();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
面试题:throws 和throw区别:
thorws:
- 用在方法声明之后,跟的是异常类名
- 表示声明异常,由该方法的调用者来处理
- 表示出现该异常可能性,并不一定会发生异常
throw:
- 用在方法体内,跟的异常对象名(new Exxxx())
- 表示抛出异常,由方法体内的语句来处理
- 执行throw一定抛出了某种异常
finally关键字
try...catch...finally
作用:
- 无论是否发生异常,finally中的代码块一定会执行,一般用来释放内存。
catch可以写多个,有顺序问题。先写小的,再写大的
面试题:try , return finally三者的执行顺序。
答案:finally在最后执行,如果有return,return最后执行
重写方法不能抛出比被重写方法更大的异常
interface Inter01;
public void show() throws Exception;
//重写方法抛出比被重写方法更大的异常类型
public class Q1 implements Inter01{
public void show() throws Exception;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】