为什么需要自定义异常类
Java中不同的异常类,分别表示着某一种具体的异常情况,在开发中总是有些异常情况是SUN没有定义好的,此时我们根据自己业务的异常情况来定义异常类。,例如年龄负数问题,考试成绩负数问题。
自定义异常类如何定义
- 自定义异常类一般都是以Exception结尾
- 自定义异常类要么继承Exception(编译时期异常),要么继承RuntimeException(运行期异常)
自定义异常类格式
- 添加一个空参数构造方法
- 添加一个带异常信息的构造方法
- 查看NullPointerException发现,所有异常类都会有有意带异常信息的构造方法,方法内部会调用父类带异常信息的构造方法,让父类来处理这个异常信息。
public class XxxException extends Exception | RuntimeException
{
public XxxException (){}
public XxxException ( String message ){
super(message);
}
}
用户注册案例
自定义异常类继承Exception
package cn.itcast.test;
import java.util.Scanner;
public class MyException {
static String[] usernames = {"张三", "李四", "王五"};
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入您需要注册的用户名:");
String username = scanner.next();
checkUserName(username);
}
public static void checkUserName(String username) {
for (String name : usernames) {
if (name.equals(username)){
try {
throw new RegisterException("该用户已注册");
} catch (RegisterException e) {
e.printStackTrace();
return;
}
}
}
System.out.println("恭喜你!注册成功");
}
}
class RegisterException extends Exception {
public RegisterException() {
}
public RegisterException(String message) {
super(message);
}
}
自定义异常类继承RuntimeException
package cn.itcast.test;
import java.util.Scanner;
public class MyException {
static String[] usernames = {"张三", "李四", "王五"};
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入您需要注册的用户名:");
String username = scanner.next();
checkUserName(username);
}
public static void checkUserName(String username) {
for (String name : usernames) {
if (name.equals(username)) {
throw new RegisterException("该用户已注册");
}
}
System.out.println("恭喜你!注册成功");
}
}
class RegisterException extends RuntimeException {
public RegisterException() {
}
public RegisterException(String message) {
super(message);
}
}
|