finally
finally太强大了,不管发生什么错,有没有被捕获,它都会无条件执行。24岁的我,对男朋友的要求,只有一个,就是像finally就行。
用法
finally一定是和try一起用的,即使没有必须要捕获的异常,要是有无条件最终都需要执行的东西的时候,也建议用try{}finally{},把必须要执行的东西放finally里,即便程序发生不可被捕获的error(其实error也是可被throwable捕获的,只是捕获了也没办法解决,一般不捕获,只捕获Exception异常),finally也会执行,即便try里面有return代码,finally还是会执行。
finally就是打不还手,骂不还口的出气筒。它真的可以做到,任时间匆匆流去,我依然等你。finally可以作为最终归宿。
案列
像多线程里使用countdownlatch来使程序做暂时的等待,countdownlatch.countdown()就为了避免各种情况导致的程序卡死,应该放在finally执行;还有各种资源,流的释放,也必须放finally执行。
来说说异常!
异常的父类是throwable,它的子类有error,exception;
error
如:StackOverflowError
Exception
其他Exception,受检查异常。
可以理解为错误,必须要开发者解决以后才能编译通过,解决的方法有两种,1:throw到上层,2,try-catch处理。
RunTimeException:运行时异常,又称不受检查异常,不受检查!不受检查!!不受检查!!!
重要的事情说三遍,因为不受检查,所以在代码中可能会有RunTimeException时Java编译检查时不会告诉你有这个异常,但是在实际运行代码时则会暴露出来,比如经典的1/0,空指针等。如果不处理也会被Java自己处理。
作者:用户7724478674266
链接:https://juejin.cn/post/6990943833458638885/
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。