Java的自定义异常类

在Java中创建用户自定义异常时,通常会继承自Exception类或其子类,并可能重载方法。当需要将异常传递给调用者时,可以通过在catch或finally块中重新抛出异常,或者生成包含原始异常信息的新异常。示例代码展示了一个自定义异常类MyException,它继承自RuntimeException,并在GetBalanceInfo方法中处理DataException,形成异常链。

创建用户自定义异常时

  • 继承自Exception类或某个子Exception类
  • 定义属性和方法,或重载父类的方法

对于异常,不仅要进行捕获处理,有时候还需要将此异常进一步传递给调用者,以便让调用者也能感受到这种异常。这时可以在catch语句块或finally语句块中采取以下三种方式:

  1. 将当前捕获的异常再次抛出:throw e;
  2. 重新生成一个异常,并抛出,如:throw new  Exception("some message");
  3. 重新生成并抛出一个新异常,该异常中包含了当前异常的信息,如:throw new  Exception("some message", e);

可以用e.getCause() 来得到内部异常。从而形成异常链

实例代码如下: 

/**
 * 自定义异常类
 */
public class MyException extends RuntimeException {
    //构造函数
    public MyException(String message){
        super(message);
    }

    public MyException(String message, Exception cause){
        super(message, cause);
    }
}
/**
 * 自定义异常类
 */
public class DataException extends Exception{
    public DataException(String message) {
        super(message);
    }

    public DataException(String message, Exception cause) {
        super(message, cause);
    }
}
public class Demo {
    public static void main(String[] args) {
        GetBalanceInfo(1111111111);
    }

    public static void GetBalanceInfo(long ID) throws MyException {
        try {
            FindData(ID);
        } catch (DataException e) {
            throw new MyException("网络不佳,请重试", e);
        }
    }

    public static void FindData(long ID) throws DataException {
        if (ID > 0 && ID < 1000) {
            System.out.println("ID = " + ID);
        } else {
            throw new DataException("没有这个数据");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值