如何自定义Java异常类?

  • Post category:Java

自定义Java异常类可以帮助开发者更好地处理代码中的异常情况,下面是自定义Java异常类的完整攻略:

1. 创建自定义异常类

自定义一个Java异常类需要继承 Exception 或者 RuntimeException。通常情况下,如果自定义的异常类是因为程序出现了错误导致的,则应该继承 Exception 类,否则应该继承 RuntimeException 类。

示例代码:

public class MyException extends Exception {
    public MyException() {
        super();
    }
    public MyException(String message) {
        super(message);
    }
}

以上的代码创建了一个继承自 Exception 类的自定义异常类 MyException。通过 super 关键字来调用父类的构造方法进行初始化。这里创建了两个构造方法,一个没有参数,另一个接收一个字符串参数用于自定义异常信息。

2. 抛出自定义异常

创建自定义异常类后,可以在程序中抛出该异常:

public void doSomething() throws MyException {
    throw new MyException("This is my exception message.");
}

以上的代码展示了如何抛出自定义的异常。这里抛出了一个 MyException 异常,并且通过 throw 关键字将其抛出。

3. 捕获自定义异常

当自定义的异常被抛出时,可以通过 catch 块捕获它,并且对其进行处理。

public static void main(String[] args) {
    try {
        doSomething();
    } catch (MyException e) {
        System.err.println(e.getMessage());
    }
}

以上的代码展示了如何捕获自定义的异常,并且打印其异常信息。在 try 块中调用了 doSomething() 方法,该方法抛出了 MyException 异常。在 catch 块中捕获该异常并打印其异常信息。

示例1

下面是一个简单的例子,展示了如何定义并使用自定义异常类。该例子中,定义了一个自定义异常类 MyException,能够处理程序中的业务异常。在程序中有一个 divide 方法,用于计算两个数字相除的结果。当被除数为 0 时,抛出自定义的异常。

public class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}
public class Demo {
    public static void main(String[] args) {
        try {
            System.out.println(divide(3, 0));
        } catch (MyException e) {
            System.out.println(e.getMessage());
        }
    }

    public static int divide(int a, int b) throws MyException {
        if (b == 0) {
            throw new MyException("the second parameter cannot be zero.");
        }
        return a / b;
    }
}

以上代码运行结果为:

the second parameter cannot be zero.

可以看到,当被除数为0时,程序抛出了自定义异常,并打印出了异常信息。

示例2

下面是另一个简单的例子,展示了如何定义并使用自定义异常类。该例子中,定义了一个自定义异常类 PasswordException,能够处理程序中的密码不合法异常。在程序中有一个 checkPassword 方法,校验密码是否符合规范。当密码不符合规范时,抛出自定义异常。

public class PasswordException extends RuntimeException {
    public PasswordException(String message) {
        super(message);
    }
}
public class Demo {
    public static void main(String[] args) {
        try {
            checkPassword("abc");
        } catch (PasswordException e) {
            System.out.println(e.getMessage());
        }
    }

    public static void checkPassword(String password) throws PasswordException {
        if (password.length() < 6 || password.length() > 20) {
            throw new PasswordException("password length should between 6 and 20.");
        }
    }
}

以上代码运行结果为:

password length should between 6 and 20.

可以看到,当密码长度不符合规范时,程序抛出了自定义异常,并打印出了异常信息。

以上就是自定义Java异常类的完整攻略,希望对你有所帮助!