在 Java 中,异常(Exception)用于处理程序运行时出现的错误或异常情况。Java 的异常处理机制基于 try
, catch
, finally
和 throw
关键字。
1.异常的分类:
1.1:检查型异常(CheckedException):
定义:程序在编译期间发生的异常,是编译器要求必须处理的异常。
处理方法:使用try-catch块处理,或在方法中使用throws处理抛出异常
Ex1:IOException ClassNotFoundException
try {
// 可能抛出检查型异常的代码
FileReader file = new FileReader("file.txt");
} catch (IOException e) {
// 异常处理代码
e.printStackTrace();
}
1.2:非检查型异常(Unchecked Exceptions)/运行异常:
定义:在程序执行期间出现的异常,称为运行时异常,也叫非检查类型异常。
Ex2:NullPointerException(空指针异常)
, ArrayIndexOutOfBoundsException(数组越界异常)
, ArithmeticException(算术异常)
处理方法:可通过Try-Catch 进行捕获和处理。
try {
int result = 10 / 0; // 可能抛出 ArithmeticException
} catch (ArithmeticException e) {
// 异常处理代码
e.printStackTrace();
}
2.异常处理的基本结构:
2.1 try-catch 块:
try块:可能包含抛出异常的代码。
catch块:用于捕获异常
try {
// 可能会抛出异常的代码
} catch (ExceptionType e) {
// 处理异常的代码
}
2.2: finally块: finally块是可选的,它包含在 try
块之后,不论是否发生异常,finally
块中的代码总会执行。通常用于资源的清理工作,如关闭文件流等。
try {
// 可能会抛出异常的代码
} catch (ExceptionType e) {
// 处理异常的代码
} finally {
// 总会执行的代码
}
2.3 throw 和 throws :
EX4:
注:
3. 方法内部如果抛出了多个异常,throws之后必须跟多个异常类型,之间用逗号隔开,如果抛出多个异常类型具有父子关系,直接声明父类即可。
EX5:
public class Config {
File file;
// public void OpenConfig(String filename) throws IOException,FileNotFoundException{
// FileNotFoundException 继承自 IOException
public void OpenConfig(String filename) throws IOException{
if(filename.endsWith(".ini")){
throw new IOException("文件不是.ini文件");
}
if(filename.equals("config.ini")){
throw new FileNotFoundException("配置文件名字不对");
}
4. 调用声明抛出异常的方法时,调用者必须对该异常进行处理,或者继续使用throws抛出。
EX6:
3.异常处理流程的总结:
RuntimeException
。
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}
异常处理机制的例子:
这就是今天要介绍的基本知识,喜欢的老友们来个三连吧!