十二、JavaSE-异常体系

  1. Exception和Error有什么区别?

在Java中,所有的异常都有一个共同的祖先java.lang包中的Throwable类。Throwable类有两个重要的子类:

  • Exception:程序本身可以处理的异常,可以通过catch来进行捕获。Exception又可以分为Checked Exception(受检查异常,必须处理)和Unchecked Exception(不受检查异常,可以不处理)。

  • Error:程序无法处理的错误,我们没有办法通过catch来进行捕获不建议通过catch捕获。例如Java虚拟机运行错误(Virtual MachineError)、虚拟机内存不够错误(OutOfMemoryError)、类定义错误(NoClassDefFoundError)等。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。

  1. Checked Exception 和 Unchecked Exception有什么区别?

Checked Exception 即受检查异常,Java代码在编译过程中,如果受检查异常没有被catch或者throws关键字处理的话,就没办法通过编译。

比如下面这段IO操作的代码:

除了RuntimeException及其子类以外,其他的Exception类及其子类都属于受检查异常。常见的受检查异常有:IO相关的异常、ClassNotFoundException、SQLException...。

Unchecked Exception即不受检查异常,Java代码在编译过程中,我们即使不处理不受检查异常也可以正常通过编译。

RuntimeException及其子类都统称为非受检查异常,常见的有(建议记下来,日常开发中会经常用到):

  • NullPointerException(空指针错误)

  • IllegalArgumentException(参数错误比如方法入参类型错误)

  • NumberFormatException(字符串转换为数字格式错误,IllegalArgumentException的子类)

  • ArrayIndexOutOfBoundsException(数组越界错误)

  • ClassCastException(类型转换错误)

  • AirthmeticException(算数错误)

  • SecurityException(安全错误比如权限不够)

  • UnsupportedOperationException(不支持的操作错误比如重复创建同一用户)

  • ...

  1. try with resource语句适用于什么场合?

  • JDK7之后,Java多了个新的语法:try-with-resources语句

  • 可以理解为是一个声明一个或多个资源的try语句(用分号隔开),一个资源作为一个对象,并且这个资源必须要在执行完闭关的,try-with-resources语句确保在语句执行完毕后,每个资源都被自动关闭。任何实现了java.lang.AutoCloseable的对象,包括所有实现了java.io.Closeable的对象,都可以作一个资源。

  • 开发场景以打开了外部资源居多:

文件

数据库链接

网络连接

  1. final,finally,finalize的区别

  • final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义成final类型。

  • finally是异常处理语句结构的一部分,表示总是执行。

  • finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等,但是JVM不保证此方法总被调用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值