Java——自定义异常类
精选
原创
©著作权归作者所有:来自51CTO博客作者无敌小污龙的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、可以自定义异常类吗?
- SUN公司提供的jdk内置的异常类肯定是不够用的,在实际开发中,有很多的业务出现异常后,jdk都是没有和业务挂钩的,所以就要我们自定义异常类了。
二、怎么自定义异常类?
- 编写一个类继承Exception(发生概率高,编译时异常)或RuntimeException(发生概率低,运行时异常)
- 提供俩个构造方法,一个无参,一个带string参数的
// 业务逻辑异常
//定义一个登陆异常类RegisterException:
public class RegisterException extends Exception {
/**
* 空参构造
*/
public RegisterException() {
}
/**
*
* @param message 表示异常提示
*/
public RegisterException(String message) {
super(message);
}
}
三、怎么使用自定义异常类
- 手动抛异常可以终止程序(throw)
- throw new 异常对象
//模拟登陆操作,使用数组模拟数据库中存储的数据,并提供当前注册账号是否存在方法用于判断。
public class Demo {
// 模拟数据库中已存在账号
private static String[] names = {"bill","hill","jill"};
public static void main(String[] args) {
//调用方法
try{
// 可能出现异常的代码
checkUsername("nill");
System.out.println("注册成功");//如果没有异常就是注册成功,有异常就不会执行这一句
}catch(RegisterException e){
//处理异常
e.printStackTrace();
}
}
//判断当前注册账号是否存在
//因为是编译期异常,又想调用者去处理 所以声明该异常
public static boolean checkUsername(String uname) throws LoginException{
for (String name : names) {
if(name.equals(uname)){//如果名字在这里面 就抛出登陆异常
throw new RegisterException("亲"+name+"已经被注册了!");
}
}
return true;
}
}
注:重写的方法不能比重写前的方法抛出更多的异常。(抛出异常的范围不能比之前的大)