自定义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异常类的完整攻略,希望对你有所帮助!