当程序执行过程中出现异常时,为了避免程序终止运行,需要对异常进行处理。在Java的异常处理中,使用try-catch语句可以捕捉、处理异常。Java7中引入了multi-catch机制,可以一次捕捉多个异常。本文将详细讲解multi-catch和try-catch异常处理知识点,包括基本用法、常见错误及解决方法以及示例说明。
基本用法
try-catch
try-catch语句用于捕捉并处理异常,语法如下:
try {
// 可能会抛出异常的代码
} catch (ExceptionType1 e1) {
// 处理ExceptionType1类型的异常
} catch (ExceptionType2 e2) {
// 处理ExceptionType2类型的异常
} finally {
// 最终执行的代码
}
- try块中包含可能会抛出异常的代码;
- catch块中包含处理异常的代码;
- finally块中包含最终将要执行的代码,无论是否发生异常,finally块中的代码都会被执行。
multi-catch
Java7中新增了multi-catch机制,可以一次捕捉多个异常,语法如下:
try {
// 可能会抛出异常的代码
} catch (ExceptionType1 | ExceptionType2 | ... | ExceptionTypeN e) {
// 处理ExceptionType1到ExceptionTypeN类型的异常
}
符号 | 解释 |
---|---|
| | 在catch块中用于分割异常类型 |
ExceptionType | 异常类型 |
multi-catch机制通过管道符“|”将异常类型分割,可以捕获多个异常类型,如例子所示。
常见错误及解决方法
Error:(17, 9) java: multi-catch statement is not supported in -source 1.6
编译报错“java: multi-catch statement is not supported in -source 1.6”是因为multi-catch机制是Java7中新增的功能,而该项目的JDK版本为1.6。解决该问题的方法是修改项目的JDK版本为1.7或更高。具体修改方法可以参考IDE的帮助文件。
Error:(21, 5) java: exception java.io.IOException is never thrown in body of corresponding try statement
编译报错“java: exception java.io.IOException is never thrown in body of corresponding try statement”是因为在try块中没有代码抛出IOException异常,而在catch块中又捕捉了此异常。解决该问题的方法是在try块中添加可能抛出的IOException异常的代码,或者移除不需要catch的异常类型。
示例说明
示例一
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
public class MultiCatchDemo {
public static void main(String[] args) {
try {
String content = new String(Files.readAllBytes(Paths.get("filename.txt")),
StandardCharsets.UTF_8);
System.out.println(content);
} catch (IOException e) {
System.err.println("读取文件出错:" + e.getMessage());
}
}
}
该程序通过Files类读取指定文件内容,如果读取时发生IOException异常,则捕获并输出错误信息。在该示例中,只捕获了IOException类型的异常,如果在代码中加入其他类型的异常,则需要添加相应的catch块。
示例二
import java.util.Scanner;
public class MultiCatchDemo {
public static void main(String[] args) {
try {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = a/b;
System.out.println(c);
} catch (ArithmeticException | java.util.InputMismatchException e) {
System.err.println("输入错误或除数为0:" + e.getMessage());
}
}
}
该程序通过Scanner类从控制台获取两个整数,进行除法运算并输出结果,如果输入的数有误或除数为0,则捕获并输出错误信息。在该示例中,捕获了ArithmeticException和InputMismatchException两种类型的异常,如果加入其他类型的异常,则可以在catch块中添加相应的异常类型。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:multi-catch和try-catch异常处理知识点详解 - Python技术站