Java 异常处理是一种机制,用于在程序执行过程中处理错误和异常情况。异常是指在程序运行时发生的不正常情况,可能导致程序的中断或错误输出。在 Java 中,异常是通过对象来表示的,它们属于 java.lang
包。异常处理的目标是在程序发生异常时,能够以一种有序的方式进行处理,防止程序因异常而崩溃。
异常的分类
Java 中的异常分为两大类:编译时异常(Checked Exception)和运行时异常(Unchecked Exception)。
- 编译时异常(Checked Exception):
- 这些异常在编译阶段就会被检查到,程序在编译时必须对它们进行处理,否则无法通过编译。
- 例如:
IOException
、ClassNotFoundException
。
- 运行时异常(Unchecked Exception):
- 这些异常通常是由程序逻辑错误引起的,编译器不会强制程序员去捕获或处理它们。
- 例如:
NullPointerException
、ArrayIndexOutOfBoundsException
。
异常的处理方式
在 Java 中,异常的处理方式主要有两种:使用 try-catch
块捕获异常,或者使用 throws
关键字声明方法可能抛出的异常。
- try-catch 块:
try {
// 可能抛出异常的代码
} catch (ExceptionType1 e1) {
// 处理 ExceptionType1 类型的异常
} catch (ExceptionType2 e2) {
// 处理 ExceptionType2 类型的异常
} finally {
// 不论是否发生异常,都会执行的代码块
}
- throws 关键字:
在方法声明中使用
throws
关键字可以指定该方法可能抛出的异常,由调用者负责处理。
public void myMethod() throws SomeException {
// 可能抛出 SomeException 异常的代码
}
throw 和 throws 的区别
- throw:
throw
用于在代码块中手动抛出一个异常对象。- 例如:
throw new SomeException("This is an exception");
- throws:
throws
用于在方法声明中指定可能抛出的异常类型,告诉调用者需要处理这些异常。- 例如:
public void myMethod() throws SomeException { }
总体来说,throw
用于在代码中抛出异常,而 throws
用于声明方法可能抛出的异常,由方法的调用者负责处理。