Java - 异常处理

异常介绍

对异常进行捕获,保证程序可以继续运行,提升程序的健壮性。

执行过程中所发生的异常时间可分为两大类:

  • Error: Java虚拟机无法解决的严重问题。如:JVM系统内部错误,资源耗尽等严重情况。比如:StackOverflowError[栈溢出]和OOM(out of memory),Error是严重错误,程序会崩溃

  • Exception: 其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理,例如空指针访问,试图读取不存在的文件,网络链接中断等等,Exception分为两大类:运行时异常[程序运行时发生的异常] 和 编译时异常[编程时,编译器检查出的异常。]

异常体系图


Java - 异常处理_第1张图片

常见五大运行时异常

空指针异常(NullPointerException)

当应用程序时图在需要对象的地方使用null时,抛出该异常

Java - 异常处理_第2张图片

ArithmeticException数学运算异常

当出现异常的运算条件时,抛出此异常,例如:除数为0

ArrayIndexOutOfBoundsException数组下标异常

当遍历数组时,索引为负或大于等于数组大小,则该索引为非法索引。

ClassCastException类型转换异常

当试图将对象强制转换为不是实例的子类时,抛出该异常。比如:

Java - 异常处理_第3张图片

NumberFormatException数字格式不正确异常

当应用程序试图将字符串转换成一种数值类型,该字符串不能转换为适当的格式时,则抛出该异常。 → 使用异常我们可以确保输入是满足条件的数字。

Java - 异常处理_第4张图片

编译异常

编译异常是指在编译期间,就必须处理的异常,否则代码不能通过编译。

Java - 异常处理_第5张图片

异常处理

try - catch - finally

程序员在代码运行中捕获发生的异常,然后自行处理

Java - 异常处理_第6张图片
1、如果异常发生了,则异常发生后面的代码不会执行,直接进入到catch块

2、如果异常没有发生,则顺序执行try的代码块,不会进行到catch

3、如果希望不管是否发生异常,都执行某段代码(比如关闭连接,释放资源等),则使用finally

4、可以有多个catch语句,捕获不同的异常(进行不同的业务处理),要求父类异常在后,子类异常在前,即异常之间有继承关系。如果发生异常,只会捕获一个异常。
Java - 异常处理_第7张图片
5、可以try - finally配合使用,这种写法相当于没有捕获异常,因此程序会直接崩掉,

应用场景:就是执行一段代码,不管是否发生异常,都必须执行某项业务逻辑。

Java - 异常处理_第8张图片

你可能感兴趣的:(java,开发语言)