【Java基础】异常处理机制:try-catch-finally

1.异常对象生成(抛出异常)

Java程序的执行过程中如果出现异常,就会生成一个异常类的对象,该异常对象将会被提交给Java运行时系统。

  • 虚拟机自动生成异常对象:虚拟机检测到程序发生了问题,在后台自动创建异常对象,并交给Java运行时系统(抛出)。

  • 开发人员手动创建异常对象:Exception exception = new ClassCastException(); 可以不交给Java运行时系统(不抛出)。就是一个普通对象。

2.处理异常对象(捕获异常catch)

方法2内抛出异常 -> 抛给调用的方法1->...直到被处理

void method1(){
method2();
}
void method2(){
System.out.println("产生异常");
}

如果抛到main()方法,并且main也不处理,则程序运行终止。

3.try-catch-finally

(1)try
把可能出现异常的代码用try括起来
image

(2)catch
捕获到ClassCastException异常,异常对象名为e。括号内是处理该异常。
可以写多个catch,参数可以是ClassCastException,也可以是它的父类。
image

异常对象e可以调用成员变量和方法
image

常用方法
getMessage() 获取异常信息,返回字符串。
printStackTrace() 获取异常类名和异常信息,以及异常出现在程序中的位置,返回值void。

catch (ClassCastException e) {
e.printStackTrace(); //控制台显示异常
System.out.println(e.getMessage()); //java.lang.Object cannot be cast to java.lang.String
}

(3)finally
finally是可选的,最后执行的代码。
不论是否有异常,不论catch语句中是否有return,finally块中的语句都会被执行。
如果catch中有return,则先执行finally块中代码,再返回catch中的return。
如果catch和finally中都有return,catch中的return会执行(表达式)不会返回,只返回finally中的return。

public void talk(String word) {
System.out.println(word);
try {
Object o = new Object();
String str = (String) o;
} catch (IndexOutOfBoundsException e) {
System.out.println("处理数组下标越界异常");
} catch (ClassCastException e) {
System.out.println("处理类型转换异常");
} catch (NullPointerException e) {
System.out.println("处理空指针异常");
} finally {
System.out.println("你写错代码了");
}
word += "~";
}

执行结果

English
处理类型转换异常
你写错代码了

1.catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类的上面。否则,报错。小的写在上面。
2.try-catch-finally结构可以嵌套

posted @   植树chen  阅读(229)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示