java 自定义异常类

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

1.常见的异常类

算术异常:ArithmeticExecption

类型强制转换异:ClassCastException

数组下标越界异:ArrayIndexOutOfBoundsException

操作数据库异常:SQLException

方法未找到异常:NoSuchMethodException

输入输出异常:IOException

空指针异常类:NullPointerException

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
java复制代码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中的一些方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
java复制代码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不是必须)

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%