开发中选择try-catch-finally还是throws?
1)父类被重写的方法没有用throws处理异常,子类重写的方法如果有异常,只能用try-catch-finally
2) 场景:比如一个方法中调用了别的方法,假设调用了三个方法,如果这三个方法之间是递进的关系(递进关系的说明:比如第一个方法正常执行后得到的数据作为参数传给第二个方法,第二个方法正常执行后得到的数据作为参数传给第三个方法)并且这三个方法都有可能出异常。
处理方式:这三个方法的声明都用throws,在调用这三个方法的方法的方法体中用一个try-catch-finally统一处理异常
这么做的原因:1)统一进行处理,更加方便2)比如如果方法1不去throws直接try-catch-finally,去调用方法一的时候异常已经被方法一处理掉了,所以可以继续在调用者的方法体中执行下面的语句,但事实上如果方法一中出了异常得到的数据方法二也用不了,(方法二要用的是方法一正常执行得到的数据),所以再执行下面的语句也没有意义。而采用这三个方法的声明都用throws,在调用这三个方法的方法的方法体中用一个try-catch-finally这种方式,如果方法一调用出现异常就直接到catch中了,try中的余下代码就不会执行了,因为也没有意义。
注意: 比如method1采用throws异常,在method2中调用method1,并用try-catch进行处理,从语法上可以在method2声明throws,但根本没有必要,因为异常已经被解决了,选择一种方式处理异常即可
注意: 运行时异常不用处理,console报异常之后,把相关代码修改即可,不要去把问题代码try-catch,要去把问题代码修改
总结: try-catch-finally或者throws是我们针对执行时可能会出现问题的代码做一个准备,表示万一出现了问题怎么办,但一定要记得该修改的代码还是要修改