Java基础之异常处理详尽笔记(干货满满)

异常的分类

异常是程序中可能出现的错误

异常体系如下
在这里插入图片描述


错误

在这里插入图片描述

Error:代表的系统级别错误(属于严重问题)
硬件问题,代码层面不用管,也管不了


异常

在这里插入图片描述

Exception:叫做异常,代表程序可能出现的问题。
我们通常会用Exception以及他的子类来封装程序出现的问题。

运行时异常:RuntimeException及其子类,编译阶段不会出现异常提醒。
运行时出现的异常(如:数组索引越界异常)

编译时异常:编译阶段就会出现异常提醒的。(如:日期解析异常)

编译时异常和运行时异常的区别?
●编译时异常:没有继承RuntimeExcpetion的异常,直接继承于Excpetion。
编译阶段就会错误提示

●运行时异常:RuntimeException本身和子类。
编译阶段没有错误提示,运行时出现的


在这里插入图片描述


异常的作用

在这里插入图片描述
作用一不必多说,控制台返回异常信息,根据异常信息修改程序bug

重点是作用二,图解明悟

在这里插入图片描述


异常的处理

JVM默认的处理方式

  • 把异常的名称,异常原因及异常出现的位置等信息输出在了控制台
  • 程序停止执行,下面的代码不会再执行了

自己处理(捕获异常)

格式:

try {
    
    
	可能出现异常的代码;
}catch(异常类名变量名){
    
    
	异常的处理代码;
}

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

在这里插入图片描述


Try-Catch灵魂四问

自己处理(捕获异常)灵魂四问:

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

会把try里面所有的代码全部执行完毕,不会执行catch里面的代码
注意:
只有当出现了异常才会执行catch里面的代码

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

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

了解性:
在JDK7之后,我们可以在catch中同时捕获多个异常,中间用 | 进行隔开
表示如果出现了A异常或者B异常的话,采取同一种处理方案

灵魂三问:如果try中遇到的问题没有被捕获,怎么执行?

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

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

下面的代码就不会执行了,直接跳转到对应的catch当中,执行catch里面的语句体
但是如果没有对应catch与之匹配,那么还是会交给虚拟机进行处理


异常的常见方法

在这里插入图片描述
包裹可能出异常的程序,快捷键Ctrl+Alt+T,自动生成try-catch

使用如下

在这里插入图片描述

printStackTrace使用细节: 仅仅是打印信息,不会停止程序运行


异常抛出处理

Throws

注意:写在方法定义处,表示声明一个异常,告诉调用者,使用本方法可能会有哪些异常

格式如下
在这里插入图片描述

编译时异常:必须要写。
运行时异常:可以不写。

Throw

注意:写在方法内,结束方法,手动抛出异常对象,交给调用者;方法中下面的代码不再执行了

格式如下
在这里插入图片描述


使用范例如下

可能出异常的方法

在这里插入图片描述

而方法调用者这边用try-catch处理或打印异常

在这里插入图片描述


异常总结

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/giveupgivedown/article/details/128927008