Java函数中的异常处理方法及实例
发布时间:2023-05-24 06:44:27
Java中异常处理的方式主要有两种:抛出异常和捕获异常。
1. 抛出异常
在函数中,如果出现了异常情况,可以通过throw语句将异常对象抛出,由函数的调用者处理。
throw语句的一般形式为:
throw new Exception("错误信息");
其中Exception是Java中的一个异常类,"错误信息"是对异常情况的描述。
例如,一个函数要求传入的参数为正数,如果传入的是负数,则会抛出一个自定义异常NegativeNumberException:
public void someFunction(int num) throws NegativeNumberException {
if (num < 0) {
throw new NegativeNumberException("参数不能为负数");
}
// 函数中的其他代码
}
在函数声明的末尾,使用throws关键字标明要抛出的异常类型。
2. 捕获异常
可以通过try-catch语句捕获异常并进行处理。
try-catch语句的一般形式为:
try {
// 可能产生异常的代码
} catch (异常类型1 e1) {
// 异常类型1的处理方法
} catch (异常类型2 e2) {
// 异常类型2的处理方法
} finally {
// 不管是否发生异常都执行的代码
}
例如,一个函数要求读入一个文件并输出其中的内容,如果文件不存在,则会捕获FileNotFoundException并打印错误信息:
public void readFile(String filename) {
try {
File file = new File(filename);
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("文件不存在");
}
// 其他代码
}
在try块中的代码可能会产生异常,可以通过catch块中的代码对不同类型的异常进行处理。在finally块中的代码会在try块中的代码执行完毕之后无论是否发生异常都会执行。
实例:自定义异常
可以通过自定义异常类来实现针对不同异常情况的处理。
例如,一个函数要求传入的字符串必须包含数字字符,如果不包含,则会抛出一个自定义异常NoNumberException:
public void checkString(String str) throws NoNumberException {
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i))) {
return;
}
}
throw new NoNumberException("字符串中没有数字字符");
}
NoNumberException类的实现如下:
public class NoNumberException extends Exception {
public NoNumberException(String message) {
super(message);
}
}
可以在catch块中捕获NoNumberException并输出错误信息:
try {
checkString("abc");
} catch (NoNumberException e) {
System.out.println(e.getMessage());
}
