首页 > 编程语言 >Java 自定义异常

Java 自定义异常

时间:2024-10-31 23:11:03浏览次数:1  
标签:Java String 自定义 super 异常 public

注:建议先阅读 Java 异常分类

Java 中使用自定义异常类,一般是继承 Exception 或者它的某个子类。如果父类是 RuntimeException 或它的某个子类,则自定义异常也是未受检异常;如果是 Exception 或 Exception 的其他子类,则自定义异常是受检异常。

Java 中的一些异常类(比如 NullPointerException)其实并没有比 Throwable 这个基类多多少属性和方法,大部分类在继承父类后只是定义了几个构造方法,这些构造方法也只是调用了父类的构造方法,并没有额外的操作。

之所以定义这么多不同的类,主要是为了名字不同。异常类的名字本身就代表了异常的关键信息,无论是抛出还是捕获异常,使用合适的名字都有助于代码的可读性和可维护性。

所以,有时候我们自定义的异常也不会定义额外的属性和代码,只是继承父类,然后定义几个构造方法,调用父类的构造方法。

public class AppException extends Exception {
    public AppException() {
        super();
    }
    public AppException(String message, Throwable cause) {
        super(message, cause);
    }
    public AppException(String message) {
        super(message);
    }
    public AppException(Throwable cause) {
        super(cause);
    }
}

当然,我们也可以根据需要定义一些额外的属性和方法:

public class CustomerException extends RuntimeException {

    private String retCd ;  // 异常对应的返回码
    private String msgDes;  // 异常对应的描述信息

    public CustomerException() {
        super();
    }

    public CustomerException(String message) {
        super(message);
        msgDes = message;
    }

    public CustomerException(String retCd, String msgDes) {
        super();
        this.retCd = retCd;
        this.msgDes = msgDes;
    }

    public String getRetCd() {
        return retCd;
    }

    public String getMsgDes() {
        return msgDes;
    }
}

参考:Java 编程的逻辑Java 自定义异常与异常使用最佳实践

标签:Java,String,自定义,super,异常,public
From: https://www.cnblogs.com/Higurashi-kagome/p/18250671

相关文章

  • yarn安装报错 Unrecognized option: --version Error: Could not create the Java Vir
    在自己电脑上安装yarn报错,Unrecognizedoption:--versionError:CouldnotcreatetheJavaVirtualMachine.Error:Afatalexceptionhasoccurred.Programwillexit.估计是和之前安装的hadoop冲突了使用whereyarn命令,找到安装yarn的目录C:\ProgramFiles\nodejs把......
  • Java 异常分类
    总结自:《Java核心技术第10版》下图是Java异常层次结构图:所有的异常都是由Throwable继承而来(注意Throwable是类而不是接口),Error和Exception是Throwable的直接子类。Error类用于描述Java运行时系统的内部错误和资源耗尽错误(比如OOM)。应用程序不应该抛出这种......
  • 【JavaEE】【多线程】进阶知识
    目录一、常见的锁策略1.1悲观锁vs乐观锁1.2重量级锁vs轻量级锁1.3挂起等待锁vs自旋锁1.4普通互斥锁vs读写锁1.5可重入锁vs不可重入锁1.6不公平锁vs公平锁二、synchronized特性2.1synchronized的锁策略2.2synchronized加锁过程2.3其它优化措施三、......
  • JavaScript语法基础——变量,数据类型,运算符和程序控制语句(小白友好篇,手把手教你学会!)
     一、JavaScript概述JavaScript是一种高级编程语言,常用于网页开发和服务器端应用程序。它是一种动态类型语言,可以在浏览器中直接解释执行,而不需要编译。脚本(Script)是一种与计算机程序相关的指令集或代码块,用于执行特定的任务或操作。脚本通常用于自动化重复性的任务或进行特......
  • 关于visual stdio 2022代码在win11上运行异常缓慢的解决方案分享
        此篇博客记录笔者解决visualstdio2022运行c语言异常缓慢的解决方案。    起初我上网查资料得知可能是我的模块加载太多了,但是在禁用了额外的模块依然异常缓慢,我就继续查找资料,于是发现另一篇博客反应了和我一样的问题,他的解决方案是关闭联想自带的安全......
  • Java面试题中高级进阶(JVM篇Java内存)
    前言本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说Java内存结构?说说对象分配规则?描述一下JVM加载class文件的原理机制?似乎有点模糊了,那就大概看一下面试题吧。好记性不如烂键盘***12万字的java面试题整理***Java内存结构方法区和堆是所有线程共享的内存区域;而j......
  • Java常见面试题之事务
    博主介绍上海交大毕业,大厂资深Java后端工程师《Java全套学习资料》作者专注于系统架构设计和高并发解决方案和面试辅导阿里云开发社区乘风者计划专家博主@author[vx]vip1024p(备注java)ACID特性A:原子性,Atomictiy,事务是最小的执行单位,不允许分割,事务的原子性确......
  • 创建一个基于Java的图书馆管理系统
    1.需求分析明确系统的主要功能需求,例如:用户注册与登录图书信息管理(增删改查)借阅管理归还管理用户管理管理员管理功能2.技术选型确定使用的技术栈:后端:Spring,SpringMVC,MyBatis前端:HTML,CSS,JavaScript(可选框架如Vue.js或React.js)数据库:MySQL服务器:Tomcat3.......
  • Java基础篇(四)(超详细整理,建议收藏!!!)
    目录 五、数组5.1 数组的概念5.2 数组声明5.3 数组创建与初始化5.3.1 使用new创建数组5.3.2 创建数组的三种方式5.3.3 创建数组需要注意的问题5.4 数组操作5.5 数组排序5.5.1 排序(冒泡)5.5.2 Arrays.sort() 5.6  Arrays工具类5.6.1排序(s......
  • Java多线程--Thread类的那些事3.--线程的6中状态和sleep()和 join()
      一.sleep()方法  首先在Thead类中有一个静态的sleep()方法,可以让线程进入到休眠状态即TEMD-WAITING状  在调用sleep()方法时需要注意的是在哪个线程里面调用sleep()方法,哪个线程就会进入阻塞状态.,在这个线程中的其他线程不会发生阻塞,只有当休眠时间到来这个......