异常处理(6)自定义异常

异常处理(6)自定义异常类

1、自定义异常要求:

(1)要继承一个异常类型

自定义一个编译时异常类型:自定义类继承java.lang.Exception

自定义一个运行时异常类型:自定义类继承java.lang.RuntimeException

(2)建议大家提供至少两个构造器,一个是无参构造,一个是(String message)构造器。

(3)自定义异常需要提供serialVersionUID

自定义异常类的使用:

  1. 自定义异常最重要的是异常类的名字和message属性。当异常出现时,可以根据名字判断异常类型。比如:TeamException("成员已满,无法添加");
  2. 自定义异常对象只能手动抛出。抛出后由try-catch处理,也可以用throws给调用者处理。

例如:

java 复制代码
public class MyException extends RuntimeException{
    public MyException() {
    }

    public MyException(String message) {
        super(message);
    }
}
public class Person {
    private String name;
    private int lifeValue;

    public Person() {
    }

    public Person(String name, int lifeValue) {
        this.name = name;
        setLifeValue(lifeValue);
    }

    public String getName() {
        return name;
    }

    public int getLifeValue() {
        return lifeValue;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", lifeValue=" + lifeValue +
                '}';
    }

    public void setLifeValue(int lifeValue) {
        if(lifeValue>=0)
        this.lifeValue = lifeValue;
        else {
            throw new MyException("This lifeValue couldn't be negative."+lifeValue);
        }
    }

    public static void main(String[] args) {
        Person p1 = new Person("Qum",18);
        System.out.println(p1.toString());
        Person p2 = new Person("Dit",-19999);
        System.out.println(p2.toString());
    }
}
相关推荐
一只努力的微服务2 分钟前
【Calcite 系列】将 INTERSECT 转换为 EXISTS
java·calcite
向往着的青绿色2 分钟前
编程式事务,更加精细化的控制
java·开发语言·数据库·spring·性能优化·个人开发·设计规范
ホロHoro14 分钟前
数据结构非线性部分(1)
java·数据结构·算法
沉下去,苦磨练!26 分钟前
实现二维数组反转
java·数据结构·算法
桦说编程34 分钟前
实现一个简单的并发度控制执行器
java·后端·性能优化
Spring AI学习43 分钟前
Spring AI深度解析(11/50):异常处理与容错机制实战
java·人工智能·spring
qq_12498707531 小时前
基于协同过滤算法的在线教育资源推荐平台的设计与实现(源码+论文+部署+安装)
java·大数据·人工智能·spring boot·spring·毕业设计
总是学不会.1 小时前
[特殊字符] 自动分区管理系统实践:让大型表维护更轻松
java·后端·数据库开发·开发
大筒木老辈子1 小时前
C++笔记---并发支持库(future)
java·c++·笔记
全靠bug跑1 小时前
Sentinel 服务保护实战:限流、隔离与熔断降级详解
java·sentinel