自定义异常类--获得有效信息

168 阅读2分钟

「这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战

前言

大家好,我是程序猿小白 gw_Gw,很高兴能和大家一起学习进步。

关于try catch和throw,throws的使用可以点击以下链接参考学习:

Java7优化前后的try catch处理概述

夯实Java基础--深入理解throw关键字

夯实Java基础--深入理解throws关键字

今天我们就来学习如何自定义异常类,输出有效的异常信息。

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

本文主要介绍如何根据不同的业务需求来自定义异常类,从而获得有用的信息。

1. 自定义异常类

在学习自定义异常类之前,我们先来了解几种访问异常信息的方法。

1.1 访问异常信息的方法

  1. String getMessage() 返回此异常的详细消息字符串。
  2. void printStackTrace() 将此异常及其追踪输出至标准错误流
  3. StackTraceElement[] getStackTrace() 提供编程访问由 printStackTrace() 输出的堆栈跟踪信息。
  4. void printStackTrace(PrintStream s) 将此 throwable 及其追踪输出到指定的输出流。

1.2 自定义异常类

有些时候不符合我们的业务需求就需要抛出异常,并且通常情况下JVM抛出的异常并不会给我们提供有效的信息,这些时候我们就可以根据需求来自定义异常类来为我们提供有用的信息。

自定义的异常类都要继承Exception异常类,并且通常会提供两个构造器,一个是无参构造器,一个是带字符串参数的构造器,这个字符串用来描述异常信息。

实例展示:

自定义异常类:

public class Abnormal extends Exception{
    public Abnormal(){
​
    }
    public Abnormal(String msg){
        super(msg);//直接调用父类的构造方法,也可以不写,自己定义。
    }
}

在业务逻辑中调用异常类:

public class AbnormalTest {
    private int num;
    public AbnormalTest(){
    }
    public void setNum(int num) throws Abnormal {
        if(num>=0){
            this.num = num;
        }
        else{
            //根据业务需求抛出异常
            throw new Abnormal("输入的num应该大于0!");
        }
    }
​
}

测试:

public class Test {
    public static void main(String[] args) throws Abnormal {
        AbnormalTest abnormalTest = new AbnormalTest();
        abnormalTest.setNum(-1);
    }
}

image-20211124163858969

小结

以上就是关于自定义异常类的一些基本使用,希望对读者有所帮助,如有不正之处,欢迎留言指正。