JAVA语言基础语法——JVM虚拟机默认处理异常的方式,try...catch捕获异常

1.JVM默认的处理方式

a.把异常的名称,异常原因及异常出现的位置等信息输出在了控制台

JAVA语言基础语法——JVM虚拟机默认处理异常的方式,try...catch捕获异常_第1张图片

运行结果如下:

JAVA语言基础语法——JVM虚拟机默认处理异常的方式,try...catch捕获异常_第2张图片

b.程序停止执行,异常下面的代码不会再执行了

2.try...catch捕获异常(自己处理,捕获异常)

a.格式:

JAVA语言基础语法——JVM虚拟机默认处理异常的方式,try...catch捕获异常_第3张图片

 b.目的:当代码出现异常时,可以让程序继续执行下去。

c.示例如下:

        JAVA语言基础语法——JVM虚拟机默认处理异常的方式,try...catch捕获异常_第4张图片    JAVA语言基础语法——JVM虚拟机默认处理异常的方式,try...catch捕获异常_第5张图片

 由于产生异常,此时代码无法继续执行

如何改变呢?

使用try...catch处理异常

JAVA语言基础语法——JVM虚拟机默认处理异常的方式,try...catch捕获异常_第6张图片           

 运行结果如下所示:

JAVA语言基础语法——JVM虚拟机默认处理异常的方式,try...catch捕获异常_第7张图片

 仔细分析红色箭头的内容

JAVA语言基础语法——JVM虚拟机默认处理异常的方式,try...catch捕获异常_第8张图片

System.out.println(arr[10]);   

1.此处出现了异常,程序就会在这里创建一个ArrayIndexOut0fBoundsException对象
2.new ArrayIndexOutOfBoundsException ();
3.拿着这个对象到 catch 的小括号中对比,看括号中的变量是否可以接收这个对象
4.如果能被接收,就表示该异常就被捕获(抓住),执行 catch 里面对应的代码

5.当 catch 里面所有的代码执行完毕,继续执行 try ... catch 体系下面的其他代码

3.捕获异常的灵魂四问:

灵魂一问:如果 try 中没有遇到问题,怎么执行?

JAVA语言基础语法——JVM虚拟机默认处理异常的方式,try...catch捕获异常_第9张图片

答:会把try里面所有的代码全部执行完毕,不会执行catch里面的代码

                注意只有当出现异常才会执行catch里面的代码

灵魂二问:如果 try 中可能会遇到多个问题,怎么执行?

JAVA语言基础语法——JVM虚拟机默认处理异常的方式,try...catch捕获异常_第10张图片

答:会写多个catch与之对应。

        细节:如果我们要捕获多个异常,这些异常中如果存在父子关系的话,那么父类一定要写在下面。

拓展:以上是JDK7以前的处理方式。

在JDK7以后我们可以同时捕获多个异常,中间用 “ | ” 进行隔开,

表示如果出现A异常或者B异常的话,采取同一种处理方案。

JAVA语言基础语法——JVM虚拟机默认处理异常的方式,try...catch捕获异常_第11张图片
灵魂三问:如果 try 中遇到的问题没有被捕获,怎么执行?

相当于try...catch的代码白写了,最终还是会交给虚拟进行处理

灵魂四问:如果 try 中遇到了问题,那么 try 下面的其他代码还会执行吗?

答:不会执行,下面的代码就不执行,直接跳转到对相应的catch 当中,执行catch里面的语句体

但是如果没有对应的catch与之匹配,那么还是会交给虚拟机处理。

JAVA语言基础语法——JVM虚拟机默认处理异常的方式,try...catch捕获异常_第12张图片

你可能感兴趣的:(JAVA语法知识+实验练习,jvm,java,开发语言)