博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java异常封装(自己定义错误码和描述,附源码)
阅读量:5136 次
发布时间:2019-06-13

本文共 2514 字,大约阅读时间需要 8 分钟。

真正工作了才发现,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、创建一个异常类BusinessException.java,继承RuntimeException:

package com.luo.exception;public class BusinessException extends RuntimeException {
private static final long serialVersionUID = 1L; public BusinessException(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.BusinessException;public class ExceptionTest {
public static void main(String args[]) { Object user = null; if(user == null){ throw new BusinessException(LuoErrorCode.NULL_OBJ); } }}

运行结果:

这里写图片描述

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

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

如果懒得copy和paste的话,直接下载工程吧:

转载于:https://www.cnblogs.com/aiwz/p/6154560.html

你可能感兴趣的文章
blog项目知识点梳理
查看>>
[POJ1187] 陨石的秘密
查看>>
Python基础之函数
查看>>
如何拥有好心情
查看>>
knockout.js的简介和简单使用
查看>>
Win10 .chm文件无法打开解决方案
查看>>
11-day11-if-for-while
查看>>
day 35 线程
查看>>
jquery的ajaxFileUpload异步上传
查看>>
http协议理解
查看>>
node随笔-二进制数组buffer
查看>>
Xcode 查找 TODO 清单
查看>>
56. Merge Intervals(js)
查看>>
MapReduce
查看>>
夜未眠1
查看>>
C++ 模板
查看>>
3.1本地数据获取
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第5节 final关键字_2_final关键字用于修饰类...
查看>>
lockback 生成json 日志配置
查看>>
【甲午年正月初九】测试的需求文档评审
查看>>