真正工作了才发现。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的话,直接下载project吧:

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

Java异常封装(自定义错误码和描写叙述,附源代码)的更多相关文章

  1. Java异常封装(自定义错误信息和描述)

    一.checked异常和unchecked异常 checked异常: unchecked异常: 二.异常封装示例 2.1.添加一个枚举LuoErrorCode.java如下: 2.2.创建一个异常类B ...

  2. Java异常封装

    转载: Java异常封装 Java里面的异常在真正工作中使用还是十分普遍的.什么时候该抛出什么异常,这个是必须知道的. 当然真正工作里面主动抛出的异常都是经过分装过的,自己可以定义错误码和异常描述. ...

  3. Java异常封装(自己定义错误码和描述,附源码)

    真正工作了才发现,Java里面的异常在真正工作中使用还是十分普遍的.什么时候该抛出什么异常,这个是必须知道的. 当然真正工作里面主动抛出的异常都是经过分装过的,自己可以定义错误码和异常描述. 下面小宝 ...

  4. 潭州课堂25班:Ph201805201 django 项目 第十课 自定义错误码,完成图片验证码,用户是否被注册功能 (课堂笔记)

    把 视图传到前台的  JsonResponse(data=data) 先进行处理,之后再传到前台, 处理:引用自定义错误代码,把错误代码返回给前台,前台根据错误代码中文提示 class Code: O ...

  5. C++_异常2-返回错误码

    一种比异常终止更灵活的办法是,使用函数的返回值来指出问题. 例如,ostream类的get(void)成员通常返回下一个输入字符的ASCII码,但到达文件尾时,将返回EOF. 对hmean()来说,这 ...

  6. [2017-08-28]Abp系列——业务异常与错误码设计及提示语的本地化

    本系列目录:Abp介绍和经验分享-目录 前言 ABP中有个异常UserFriendlyException经常被使用,但是它所在的命名空间是Abp.UI,总觉得和展现层联系过于紧密,在AppServic ...

  7. Spring Boot 如何自定义返回错误码错误信息

    说明 在实际的开发过程中,很多时候要定义符合自己业务的错误码和错误信息,而不是统一的而不是统一的下面这种格式返回到调用端 INTERNAL_SERVER_ERROR(500, "Intern ...

  8. CMPP错误码说明

    与中国移动代码的对应关系. MI::zzzzSMSC返回状态报告的状态值为EXPIREDMJ:zzzzSMSC返回状态报告的状态值为DELETEDMK:zzzzSMSC返回状态报告的状态值为UNDEL ...

  9. 转!!CMPP 网关错误码说明

    http://www.163duanxin.com/msg/1753.htm CMPP错误码说明   与中国移动代码的对应关系. MI::zzzzSMSC返回状态报告的状态值为EXPIREDMJ:zz ...

随机推荐

  1. Java中堆和栈有什么区别

    stack 和 heep 都是内存的一部分stack 空间小,速度比较快, 用来放对象的引用heep 大,一般所有创建的对象都放在这里. 栈(stack):是一个先进后出的数据结构,通常用于保存方法( ...

  2. bzoj 2843: 极地旅行社

    Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1077  Solved: 645[Submit][Status][Discuss] Descripti ...

  3. C# html的Table导出到Excel中

    C#中导出Excel分为两大类.一类是Winform的,一类是Web.今天说的这一种是Web中的一种,把页面上的Table部分导出到Excel中. Table导出Excel,简单点说,分为以下几步: ...

  4. sqlite db-journal文件产生原因及说明

    今天在Android中将sqlite的数据库文件生成在SD卡上的过程中,发现生成的.db文件的旁边 生成了一个大小为0的与数据库文件同名的.db-journal文件,不明白此文件的用途,于是 goog ...

  5. Flex 布局学习笔记

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. java 文件上传数据库

    存储文件的数据库类型: 1.oracle :Blob,bfile类型 2.mysql:longblob类型 3.sqlserver :varbinary(Max)类型 文件都是以二进制流存入数据库的, ...

  7. IQueryable接口与IEnumberable 区别

    总结一下: IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable<T> 是将Skip ,t ...

  8. 2017.4.26 慕课网--Java 高并发秒杀API(一)

    Java高并发秒杀API系列(一) -----------------业务分析及Dao层 第一章 课程介绍 1.1 内容介绍及业务分析 (1)课程内容 SSM框架的整合使用 秒杀类系统需求理解和实现 ...

  9. 3D数学读书笔记——矩阵基础番外篇之线性变换

    本系列文章由birdlove1987编写.转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25102425 前面有一篇文章 ...

  10. vue-router push

    //push 方法一 对象 // this.$router.push({path:'HelloWorld2'}); //push 方法二 命名的路由 // this.$router.push({nam ...