第七章 异常、断言和日志

一、异常分类

                如上图所所示:所有的异常对象都是继承于Throwable类,Throwable类派生出Error和Exception两大类。

        Error类主要描述Java运行时系统的内部错误和资源耗尽错误。这种错误一般会阻断程序的运行。

        Exception异常:主要分为RuntimeException和其他异常。

        RuntimeException主要包括:错误的强制转换类型ClassCastException、数组访问越界IndexOutOfBoundsException、空指针异常NullPointerException等常见异常。其他的异常包括:试图打开不存在的文件FileNotFoundException,类不存在ClassNotFoundException等异常。

        我们在开发过程中需要对RuntimeException进行处理。


二、异常处理

        1、声明检查异常:throws RuntimeException,把异常抛到上一层级进行处理。

        2、异常捕获处理:try/catch/finally进行处理。

        try代码块:正常执行的业务逻辑,可能会出现异常的代码块。注:只发发生异常就不会再执行后续的代码。

        catch代码块:捕获的异常类型,可声明多个catch代码块,进行不同的异常捕获处理,同时也可以在catch块中抛出异常。注:只有try代码块抛出了异常才会执行catch代码块的内容。

        在catch中捕获异常,并调用e.printStackTrace();方法会显示堆栈轨迹。

        finally代码块:不管发没发生异常,最后总会处理执行finally代码块的代码。所以一般在finally块里面会执行:I/O流的关闭,数据库链接的关闭,锁的释放等释放资源的操作。

        注:spring的事务@Transaction与try/catch之间的冲突:如果方法上标注了使用事务,但是在方法内部又使用了try/catch对代码异常进行了捕获,需要在catch方法内重新抛出异常,事务才能捕捉到异常,进行回滚操作。


 三、断言

       Java中 使用assert关键字来实现断言。

       Java的断言就是一条assert 声明,其中包含了一个布尔表达式。断言可以被启用或者禁用,默认是禁用的。
        断言被启用的情况下,执行到断言的声明,就会计算布尔表达式的值。如果表达式的值为false,那么就会抛出一个错误。

        断言形式:assert Expression1 ; 或者 assert Expression1 : Expression2;

        其中Expression1返回值必须是boolean或者Boolean类型,Expression2如果返回值是void就会编译报错。


四、日志

        Java自带的日志级别:severe、Warning、infoconfig、fine、finer、finest在开发中一般只关注前三个级别的日志。

        常用的日志插件:slf4j、logback等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值