Java异常封装(自定义错误码和描写叙述,附源代码)

java

真正工作了才发现。Java里面的异常在真正工作中使用还是十分普遍的。

什么时候该抛出什么异常,这个是必须知道的。

当然真正工作里面主动抛出的异常都是经过分装过的,自己能够定义错误码和异常描写叙述。

以下小宝鸽就为大家介绍一个Java异常简单封装的样例。

在给出异常分装样例之前。须要给大家普及Java里面的checked异常和unchecked异常的个概念。

一、checked异常和unchecked异常

这里之所以让大家清楚checked异常和unchecked异常概念,是由于:待会我们的异常是继承unchecked异常RuntimeException的。了解一下并无坏处嘛

checked异常:

表示无效。不是程序中能够预測的。比方无效的用户输入,文件不存在,网络或者数据库链接错误。这些都是外在的原因,都不是程序内部能够控制的。

必须在代码中显式地处理。比方try-catch块处理。或者给所在的方法加上throws说明。将异常抛到调用栈的上一层。

继承自java.lang.Exception(java.lang.RuntimeException除外)。

unchecked异常:

表示错误。程序的逻辑错误。是RuntimeException的子类,比方IllegalArgumentException, NullPointerException和IllegalStateException。

不须要在代码中显式地捕获unchecked异常做处理。

继承自java.lang.RuntimeException(而java.lang.RuntimeException继承自java.lang.Exception)。

看以下的异常结构图也许层次感更加深些:

二、异常分装实例

2.1、加入一个枚举LuoErrorCode.java例如以下:

package com.luo.errorcode;

public enum LuoErrorCode {

NULL_OBJ("LUO001","对象为空"),

ERROR_ADD_USER("LUO002","加入用户失败"),

UNKNOWN_ERROR("LUO999","系统繁忙,请稍后再试....");

private String value;

private String desc;

private LuoErrorCode(String value, String desc) {

this.setValue(value);

this.setDesc(desc);

}

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

public String getDesc() {

return desc;

}

public void setDesc(String desc) {

this.desc = desc;

}

@Override

public String toString() {

return "[" + this.value + "]" + this.desc;

}

}

注意!

!!

这里我们重写了LuoErrorCode的toString方法,至于为什么要这样。后面会提到,客观请继续看。

2.2、创建一个异常类Busines***ception.java,继承RuntimeException:

package com.luo.exception;

public class Busines***ception extends RuntimeException {

private static final long serialVersionUID = 1L;

public Busines***ception(Object Obj) {

super(Obj.toString());

}

}

这里的代码尽管短,可是有两点须要注意的!!!第一点是其继承了RuntimeException。由于一般我们的业务异常都是执行时异常。

第二点,这里的构造方法调用父方法super(Obj.toString());,这就是重写了LuoErrorCode的toString方法的原因了,假设还不明确,看完后面的你就明确了。

2.3、測试类ExceptionTest.java:

package com.luo.test;

import com.luo.errorcode.LuoErrorCode;

import com.luo.exception.Busines***ception;

public class ExceptionTest {

public static void main(String args[]) {

Object user = null;

if(user == null){

throw new Busines***ception(LuoErrorCode.NULL_OBJ);

}

}

}

执行结果:

补充一下:在我们实际项目里面,比方别人调用你接口。你可能须要先看他传过来的对象是不是空的,先推断假设传过来的对象为空给有友好的提示”[LUO001]对象为空”。不然后面的代码预计会出现空指针异常了。

一般公司都会分装一个基础框架,异常分装是当中一部分。当然他们对异常的分装肯定比我这个样例复杂多,因此本例仅供參考。

假设懒得copy和paste的话,直接下载project吧:

http://download.csdn.net/detail/u013142781/9422684

以上是 Java异常封装(自定义错误码和描写叙述,附源代码) 的全部内容, 来源链接: www.h5w3.com/python/702394.html

回到顶部