异常处理方式一:
出现一个输入不是数字的异常,我们用相应的异常处理。输入算术异常我们就用算术异常来处理
异常处理方式二:
使用一个父类异常替代子类异常,这里我们还可以直接使用最大的父类:Exception去接收异常
异常处理方式三:
我们在最后增加一个finally ,必然执行的异常统一处理出口,无论是否发生异常,finally必然执行
我们以后在进行IO操作,数据库的连接 我们必须要释放资源,就可以放在finally模块,就会必然执行
关于 finally 的面试题:异常中的return问题
上面的例子:问 a 的返回值是多少?
a的返回值是10,因为return a,是将a作为了一个备份,finally里面修改的是a = 20,但是返回的值是备份里面的内容
和上面的例子类似,问 age的返回值是多少?
这里age的返回值 28,因为 返回的p是age的地址,但是finally修改的是堆内存的数据
return p 是返回的age的地址
问 : Fianlly的语句块一定会执行吗?
当程序退出、电脑关机,finally语句块就不会执行,比如:退出JVM的代码: System.exit(0);
下面的例子,说明了程序中断,finally中的语句块就没有执行