你可以直接写在try后面C++就是这么做的,因为你的异常并没有向往抛出到别的类上面,所以没什么不安全的,程序的控制权还是在你这个类里面。至于不安全的情况是怕碰到发生没有捕捉到的异常或者这个类在发生异常把异常抛出导致程序的控制权移交到别的类,你这个类就执行到这里就断了。但是你仅仅只是在打印,并没有向别的类移交控制权,所以你可以直接写在catch后面他一定会执行的。
接下来说一说close,他也是会发生异常的,最明显的异常就是nullpointer,因为File对象为null。java过于严谨的语法规则就是需要你显式处理所有可预见异常。所以close也需要try...cache,很臃肿吧,可是没办法就是这么规定的,好在java被oracle收购了之后开始学习别的语言好的东西了,比如吸收了C++11标准中的lambda和python特有的with (就是你写的try(...))。从而向着灵活读更高的方向上发展了。
接下来说一说close,他也是会发生异常的,最明显的异常就是nullpointer,因为File对象为null。java过于严谨的语法规则就是需要你显式处理所有可预见异常。所以close也需要try...cache,很臃肿吧,可是没办法就是这么规定的,好在java被oracle收购了之后开始学习别的语言好的东西了,比如吸收了C++11标准中的lambda和python特有的with (就是你写的try(...))。从而向着灵活读更高的方向上发展了。