java的健壮性体现在什么地方

Java的健壮性体现在异常处理

你是如何处理异常的

通常使用Try–catch的方式处理异常,有时也会交给外层处理异常

如何定义一个异常

一种是继承RuntimeExceprion,一种是继承Exception,两种方式有本质的区别

异常的分类

error

指的是java运行时系统内部错误和资源耗尽错误,应用程序不会抛出该类对象

exception

受控异常,Exception的直接子类,一般是外部错误,通常发生在编译阶段java编译时会强制要求捕获的异常类型

非受控异常: RuntimeException 的直接子类,那些虚拟机正常运行期间的报出的异常类

异常处理

工作中是如何处理异常的,有什么注意事项

异常处理方式有两种 分别是抛出异常和捕获异常

抛出异常有三种方式 分别是 throw throws 和系统自动抛出的异常

捕获异常 即try–catch–finally的方式处理异常

只有在finally中对应的try代码块中得到执行的的情况下才会执行finally中的语句

throw和throws有什么区别

throw用在方法内,后面跟着异常对象,用来哦熬出具体的异常对象,执行到throw这个方法就结束了 一定会抛出异常

基础面试题5(异常处理)_后端

直接报不可达语句错误

throws 用在方法上后面跟异常类 可以有多个,用来声明异常,让调用者知道该功能可能出现的问题,可以预先处理异常,异常的一种可能出现,但是不一定会发生的异常

基础面试题5(异常处理)_异常处理_02

当捕获时会直接捕获这个异常类

基础面试题5(异常处理)_异常处理_03

什么情况下finally不会执行


  1. 不在finally对应的try代码块中不会执行
  2. 主动调用System.exit(0) 直接退出jvm虚拟机也不会执行
  3. 如果方法finally中的代码有return 一定返回的是finally中的return的结果

final finally finallize的区别

final表示不可变的

修饰在变量上表示一旦赋值不可修改

修饰在方法上表示方法不可被继承,但是可以被重载

修饰在类上表示类不可变

finally是异常处理,不管是否发生异常都一定会执行的

finalize表示垃圾回收的方法用于释放非java资源,不能保证jvm一定会调用