欢迎访问宙启技术站
智能推送

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());
}