【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括起来
(2)catch
捕获到ClassCastException异常,异常对象名为e。括号内是处理该异常。
可以写多个catch,参数可以是ClassCastException,也可以是它的父类。
异常对象e可以调用成员变量和方法
常用方法
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结构可以嵌套
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本