在 Java 基础语法中,当程序执行过程中发生错误或异常时,会抛出异常,异常即指程序在运行过程中遇到的错误或意外情况。Java 中的异常是用于处理程序意外情况的一种机制。
Java 认识异常并掌握使用
什么是异常?
在 Java 基础语法中,当程序执行过程中发生错误或异常时,会抛出异常,异常即指程序在运行过程中遇到的错误或意外情况。Java 中的异常是用于处理程序意外情况的一种机制。
异常的分类
Java 中的异常一般分为两类:可检查异常(checked exception)和不可检查异常(unchecked exception)。
- 可检查异常:这种类型的异常在编码时必须使用 try-catch 块或者 throws 关键字进行处理,不处理编译时会报错。
- 不可检查异常:这种类型的异常在编码时可以不处理,如果不处理,在运行时会抛出异常。
异常处理的方法
异常的处理可以使用 try-catch-finally 块进行处理,也可以使用 throws 关键字将异常抛给调用者。
try-catch-finally 块
try {
// 可能会抛出异常的代码块
} catch (Exception e) {
// 处理异常的代码块
} finally {
// 最后一定执行的代码块
}
在 try 块中写可能会抛出异常的相关代码,在 catch 块中处理异常,如果有多个 catch 块,从上到下按顺序匹配异常类型进行处理。
finally 块中的代码一定会执行,无论 try 和 catch 块中是否有异常抛出,都会执行 finally 块中的代码。finally 块一般用于释放资源等操作。
throws 关键字
当一个方法将异常抛给调用者时,需要在方法中使用 throws 关键字,如下所示:
public void test() throws Exception {
// 可能会抛出异常的代码块
}
调用该方法时,调用者需要处理或者继续抛出该异常。
示例说明
可检查异常的处理
在下面的示例代码中,我们可以看到,当调用 FileInputStream 的构造方法时,需要抛出 FileNotFoundException 异常。由于该异常为可检查异常,所以在编码时需要使用 try-catch-finally 块进行处理。
示例代码如下:
public class Demo {
public static void main(String[] args) {
FileInputStream fis = null;
try {
fis = new FileInputStream("D:\\test.txt");
// TODO 业务处理
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
if (fis != null) {
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
在上述示例代码中,我们通过使用 try-catch-finally 块捕获了 FileNotFoundException 异常,并在 finally 块中释放了文件流资源。
不可检查异常的处理
在下面的示例代码中,我们可以看到,当数组下标越界时,会抛出 ArrayIndexOutOfBoundsException 异常,该异常为不可检查异常,所以不需要在编码时进行处理。
示例代码如下:
public class Demo {
public static void main(String[] args) {
String[] arr = new String[3];
System.out.println(arr[3]);
}
}
在上述示例代码中,当使用 System.out.println(arr[3]) 时,会抛出 ArrayIndexOutOfBoundsException 异常,我们可以在控制台看到完整的异常信息。
总结
Java 中的异常是处理程序意外情况的重要机制,可检查异常必须在编码时进行处理,而不可检查异常则可以忽略。在异常处理时,我们可以使用 try-catch-finally 块进行处理,也可以使用 throws 关键字将异常抛给调用者。最后,需要注意资源的释放,在 finally 块中释放资源是一种较好的方式。
本文标题为:Java 认识异常并掌握使用
基础教程推荐
- maven配置阿里云仓库的实现方法 2023-04-22
- 用JavaScript实现 铁甲无敌奖门人 “开口中”猜数游戏 2023-12-22
- Spring Boot如何支持嵌入式Servlet容器 2024-01-16
- 使用json对象转化为key,value的对象数组 2024-01-19
- jsp中定义和使用方法示例介绍 2023-12-09
- Java躲不过设计模式的坑之代理模式详解 2023-05-13
- 使用富文本编辑器上传图片实例详解 2023-08-01
- mybatis-plus 如何操作json字段 2024-01-20
- Java Socket实现聊天室功能 2023-05-08
- Spring AOP结合注解实现接口层操作日志记录 2023-12-23
