阅读 51
java 自定义异常类

java 自定义异常类

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

1.常见的异常类

算术异常:ArithmeticExecption

类型强制转换异:ClassCastException

数组下标越界异:ArrayIndexOutOfBoundsException

操作数据库异常:SQLException

方法未找到异常:NoSuchMethodException

输入输出异常:IOException

空指针异常类:NullPointerException

2.查看一个异常类源码(以NullPointerException 为例子)

public class NullPointerException extends RuntimeException {
    private static final long serialVersionUID = 5162710183389028792L;

    public NullPointerException() {
    }

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

public class RuntimeException extends Exception {
    static final long serialVersionUID = -7034897190745766939L;

    public RuntimeException() {
    }

    public RuntimeException(String message) {
        super(message);
    }

    public RuntimeException(String message, Throwable cause) {
        super(message, cause);
    }

    public RuntimeException(Throwable cause) {
        super(cause);
    }

    protected RuntimeException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}
复制代码

上面的这个异常是RuntimeException的子类,所以他是非检查异常类,他一般在编译时能过但是在代码运行过程中会出现异常,而我们一般自定义的异常是非检查类异常,需要继承RuntimeException.因此根据上面这个例子 我们自己来编写自定义的异常类,以使得我们在开发过程中写适合需求的异常类

3.自定义异常

(在上面你继承Exception也是可以的)自定义异常在我们日常开发中有时是需要的,这里我自定义了一个用户异常类,在抛出异常的时候能够灵活自定义错误信息,或者可以同时自定义错误码和错误信息 你也可以重写RuntimeException中的一些方法

public class UserException extends RuntimeException{
    private static final long serialVersionUID = 1L;
    private String code;

    public UserException() {
        super();
    }

    public UserException(String message) {
        super(message);
        this.code = ResultCode.EXISTING_ASSOCIATED_DATA.getCode();
    }

    public UserException(String code, String message){
        super(message);
        this.code = code;
    }

    public UserException(String message, Throwable cause) {
        super(message, cause);
    }

    public UserException(Throwable cause) {
        super(cause);
    }
}
复制代码

顺便提一下 一般处理异常我们有5个关键字:throws在方法上抛出一个异常,throw一般是在一个语句中抛出异常,而try-catch-finally: 将可能要出现异常的代码放入try中,catch 捕获 try 中的异常,并处理,不管有没有异常,finally中的代码都会执行。(finally不是必须)

文章分类
后端
文章标签