我最近一直在做一些纯Java开发,我正在使用一个暴露少量方法的外部库,每个方法都有可能抛出Exception
。
除非我将每个调用都包含在try-catch
块中,否则Eclipse不会让我编译我的程序。到目前为止,没什么大不了的。
然后我注意到了一些引发ArrayList.add()
的事情,比如IndexOutOfBoundsException
。如何在不需要将其包裹在try..catch
中的情况下调用此类内容? Obv,在这种特殊情况下,如果每次都必须这样做,那将是非常恼人的,但是在某些情况下try-catch
是如何以及为什么强制执行的,而不是其他情况?
答案 0 :(得分:5)
Unchecked exceptions(Error
或RuntimeException
的子类)不需要try..catch
块,当没有try...catch
时,该方法无需声明自身成为throws
(当然,你可以考虑宣布throws
是一个好习惯)。另一方面,已检查确实需要try...catch
,或声明throws
。
答案 1 :(得分:3)
IndexOutOfBoundsException
是一个未经检查的异常,即它扩展了RuntimeException
或Error
或子类,因此不需要try / catch块。来自docs:
已检查的例外情况受Catch或Specify Requirement的约束。除Error,RuntimeException及其子类指示的异常外,所有异常都是经过检查的异常。
相反,已检查的异常需要try/catch
块,否则将导致编译器错误。