Java核心技术系列之华东师范大学Java核心技术第九章Java异常和异常处理

Java核心技术系列之华东师范大学Java核心技术第九章Java异常和异常处理

异常处理机制目的

这个章节一般主要是代码中的异常处理机制,异常处理机制主要目的有以下三点:

  • 允许用户及时保存结果
  • 抓住异常,分析异常内容
  • 控制程序返回到安全状态

异常机制方法

try-catch-finally结构

try必须要有,catch和finally至少有一个。

  • try:正常业务逻辑代码
  • catch:当try发生异常,将执行catch代码。若没有异常,跳过。
  • finally:兜底,try-catch之后会执行的逻辑。如果catch中也发生异常,那么先执行finally逻辑,然后再报catch中的逻辑错误语句。
    在这里插入图片描述

在这里插入图片描述
那如果catch块有多个呢?从上到下进行匹配的,因此一般小的异常写在前面,大的异常写到后面。

throws声明异常

我们也可以不对异常进行处理,调用带有throws的方法来进行异常声明,让调用方抛出异常或者对异常进行处理。
在这里插入图片描述

自定义异常

在这里插入图片描述

  • 非RuntimeException,是CheckException,IDE辅助检查
  • RuntimeException,是UncheckException,IDE不会辅助检查,需要程序员自行处理

在方法对异常的处理上,throw和throws有所不同:

  • 在方法内部程序中,抛出异常采用throw关键字
  • 在方法头部声明中,声明异常采用throws关键字

举个例子,定义一个自定义异常类,名为DefineMyException.java,代码如下:

package chapter9;

public class DefineMyException extends Exception{
    private String returnCode; //异常返回码
    private String returnMsg; //异常返回信息

    public DefineMyException() {
        super();
    }

    public DefineMyException(String returnMsg) {
        super(returnMsg);
        this.returnMsg = returnMsg;
    }

    public DefineMyException(String returnCode, String returnMsg) {
        super();
        this.returnMsg = returnMsg;
        this.returnCode = returnCode;
    }

    public String getReturnCode() {
        return returnCode;
    }

    public String getReturnMsg() {
        return returnMsg;
    }

}

对其进行测试,测试文件名为

package chapter9;

public class DefineMyExceptionTest {
    public static void testException() throws DefineMyException {
        throw new DefineMyException("1001", "The reason of my exception");
    }

    public static void main(String[] args) {
        try{
            DefineMyExceptionTest.testException();
        } catch (DefineMyException e) {
            e.printStackTrace();
            System.out.println("returnCode: " + e.getReturnCode());
            System.out.println("returnMsg: " + e.getReturnMsg());
        }
    }
}

输出结果为:

chapter9.DefineMyException
	at chapter9.DefineMyExceptionTest.testException(DefineMyExceptionTest.java:5)
	at chapter9.DefineMyExceptionTest.main(DefineMyExceptionTest.java:10)
returnCode: 1001
returnMsg: The reason of my exception

总结

这里讲了4个点,整体上来说,是在Java中的处理机制问题。
1、try-catch-finally机制
2、throws声明异常
3、子类重写的方法所声明的异常不能超出父类规定的范围
4、自定义异常
4.1、自定义异常继承自Exception或者RuntimeException
4.2、自定义异常重点在结构函数
4.3、采用throw抛出异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值