java异常处理机制(二)之异常处理与捕获
一、异常概述
1 Error(错误):
是指程序无法处理的错误,表示运行应用程序时比较严重的问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时JVM(Java 虚拟机)出现的问题。
2 异常(Exception):
是指在程序执行时由于程序处理逻辑上的错误而导致程序中断的一种指令流。通俗的说,就是程序员写的代码错误。
两者的区别:错误无法处理,异常可以被程序本身处理。
二、异常分类
异常可以分为编译时异常和运行时异常两种类型。
编译时异常:都是Exception类及其子类,必须显式(手动处理),否则程序就会发生错误,无法通过编译。
运行时异常:都是RuntimeException类及其子类,无需显式处理(手动处理),也可以和编译时异常一样处理。
常见的运行时异常:
NullPointerException 空指针异常
ArithmeticException 数学运算异常
ArrayIndexOutOfBoundsException 数组下标越界异常
ClassCastException 类型转换异常
NumberFormatException 数字格式不正确异常
常见的编译异常:
SQLException 操作数据库时,查询表可能发生异常
IOException 操作文件时发生的异常
FileNotFoundException 当操作一个不存在的文件时,发生异常
ClassNotFoundException 加载类,但是该类不存在时,发生异常
EOFException 操作文件,到文件末尾,发生异常
IllegalArguementException 非法参数异常
三、异常的处理
异常捕获指在程序运行过程中,发生了一些不可预测的错误或异常,需要对这些错误或异常进行捕获和处理的过程。在编程中,我们可以使用 try-catch-finally 语句块来进行异常捕获。
- try:将可能会出错的代码放入 try 块中。
- catch:当 try 块中的代码出现异常时,程序会跳转到 catch 块去处理异常,防止程序崩溃。
- finally:不管 try 块中的代码是否正常执行,finally 块中的代码都会被执行,通常用来释放资源。
以下是一个简单的异常处理和捕获的例子:
try {
// 可能会抛出异常的代码块
} catch (ExceptionType1 e1) {
// 处理特定类型的异常1
} catch (ExceptionType2 e2) {
// 处理特定类型的异常2
} finally {
// 必须执行的代码块
}
在上面的代码中,try块中的代码可能会抛出异常。如果抛出了ExceptionType1类型的异常,将跳转到第一个catch块中处理它。如果抛出了ExceptionType2类型的异常,将跳转到第二个catch块中处理它。无论是否出现异常,finally块中的代码都将执行。
需要注意的是,在Java中,异常处理应该尽可能地处理所有可能的异常,并且应该总是使用try-catch-finally块,即使代码中出现了Unchecked Exception。这样可以确保程序的稳定性和可靠性。