java进阶--自定义异常

SUN提供的JDK内置异常肯定不够用,在实际开发中,有很多业务出现的异常JDK中都是没有的,需要自定义异常。

1.步骤

第一步:编写一个类继承Exception(编译时异常)或者RuntimeException(运行时异常)
第二步:提供两个构造方法,一个无参数的,一个带有String参数的

//自定义异常
public class MyException extends Exception{
     
    public MyException(){
     }
    
    public MyException(String s){
     
        super(s);
    }
    //使用自定义异常
    public static void main(String[] args) {
     
        //创建异常对象(只new了异常对象,并没有手动抛出)
        MyException e=new MyException("用户名不能为空!");
        
        //打印异常堆栈信息
        e.printStackTrace();//输出:MyException: 用户名不能为空!

		//获取异常简单描述信息
        String msg=e.getMessage();
        System.out.println(msg);//输出:用户名不能为空!
    }
}

2.在实际开发中的应用

//在方法中继承自定义的异常,在可能出现异常的地方用throw new的方式手动抛异常
public void m1() throws MyException{
     
	throw new MyException"出现异常";
}

自定义异常的处理用try catch

例子:
用户注册,输入名字和密码,名字小于6个字或大于14时报错

UserService类

public class UserService {
     
    public void register(String username,String password) throws IllegalNameException {
     
        //null==username一般放在所有条件的最前面,可以先判断引用是否为空
    if (null==username||username.length()<6||username.length()>14){
     
        //不用异常的写法:System.out.println("用户名不合法");

        //使用异常的写法
        throw new IllegalNameException("用户名不合法");
    }
        System.out.println("注册成功,欢迎【"+username+"】");
    }
}

IllegalNameException类

public class IllegalNameException extends Exception{
     
    public IllegalNameException(){
     }

    public IllegalNameException(String s){
     
        super(s);
    }
}

测试

public class Test {
     
    public static void main(String[] args) {
     
        UserService userService=new UserService();
        try {
     
            userService.register("jackson","123");
        }catch (IllegalNameException e){
     
            System.out.println(e.getMessage());
        }
    }
}

你可能感兴趣的:(Java,#,JavaSE,java)