java的健壮性体现在什么地方
Java的健壮性体现在异常处理
你是如何处理异常的
通常使用Try–catch的方式处理异常,有时也会交给外层处理异常
如何定义一个异常
一种是继承RuntimeExceprion,一种是继承Exception,两种方式有本质的区别
异常的分类
error
指的是java运行时系统内部错误和资源耗尽错误,应用程序不会抛出该类对象
exception
受控异常,Exception的直接子类,一般是外部错误,通常发生在编译阶段java编译时会强制要求捕获的异常类型
非受控异常: RuntimeException 的直接子类,那些虚拟机正常运行期间的报出的异常类
异常处理
工作中是如何处理异常的,有什么注意事项
异常处理方式有两种 分别是抛出异常和捕获异常
抛出异常有三种方式 分别是 throw throws 和系统自动抛出的异常
捕获异常 即try–catch–finally的方式处理异常
只有在finally中对应的try代码块中得到执行的的情况下才会执行finally中的语句
throw和throws有什么区别
throw用在方法内,后面跟着异常对象,用来哦熬出具体的异常对象,执行到throw这个方法就结束了 一定会抛出异常
直接报不可达语句错误
throws 用在方法上后面跟异常类 可以有多个,用来声明异常,让调用者知道该功能可能出现的问题,可以预先处理异常,异常的一种可能出现,但是不一定会发生的异常
当捕获时会直接捕获这个异常类
什么情况下finally不会执行
- 不在finally对应的try代码块中不会执行
- 主动调用System.exit(0) 直接退出jvm虚拟机也不会执行
- 如果方法finally中的代码有return 一定返回的是finally中的return的结果
final finally finallize的区别
final表示不可变的
修饰在变量上表示一旦赋值不可修改
修饰在方法上表示方法不可被继承,但是可以被重载
修饰在类上表示类不可变
finally是异常处理,不管是否发生异常都一定会执行的
finalize表示垃圾回收的方法用于释放非java资源,不能保证jvm一定会调用