Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 487|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-7-9 15:19:27 | 显示全部楼层 |阅读模式

    真正工作了才发现。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

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-18 17:10 , Processed in 0.069008 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表