Unchecked Exception(运行时异常) 不需要让调用者处理,当该异常发生,希望程序停止,因为在运行时,出现了无法继续运算的情况,希望程序停止后由程序员对代码进行修正。
如果一个异常所表示的并不是代码本身的不足所导致的非正常状态,而是一系列应用本身也无法控制的情况,那么我们将需要使用Checked Exception。尝试着定义一个Checked Exception之前,API编写者首先要考虑这个异常所表示的到底是系统自身缺陷所导致的运行错误,还是要让用户自己来处理的边缘情况。
从API编写者的角度来讲,他所需要考虑的就是在何时使用一个Checked Exception。由于throws也是函数声明的一部分,因此为一个函数所能抛出的Checked Exception添加清晰准确的文档实际上是非常重要的。
首先,Checked Exception应当只在异常情况对于API以及API的使用者都无法避免的情况下被使用。例如在打开一个文件的时候,API以及API的使用者都没有办法保证该文件一定存在。反过来,在通过索引访问数据的时候,如果API的使用者对参数index传入的是-1,那么这就是一个代码上的错误,是完全可以避免的。因此对于index参数值不对的情况,我们应该使用Unchecked Exception。
其次,Checked Exception不应该被广泛调用的API所抛出。这一方面是基于代码整洁性的考虑,另一方面则是因为Checked Exception本身的实际意义是API以及API的使用者都无法避免的情况。如果一个应用有太多处这种“无法避免的异常”,那么这个程序是否拥有足够的质量也是一个很值得考虑的问题。而就API提供者而言,在一个主要的被广泛使用的功能上抛出这种异常,也是对其自身API的一种否定。
再次,一个Checked Exception应该有明确的意义。这种明确意义的标准则是需要让API使用者能够看到这个Checked Exception所对应的异常类,该异常类所包含的各个域,并阅读相应的API文档以后就能够了解到底哪里出现了问题,进而向用户提供准确的有关该异常的解释。
而对于API的用户而言,一旦遇到了一个API会抛出Checked Exception,那么他就需要考虑使用一个Wrapped Exception来将该Checked Exception包装起来。
https://www.cnblogs.com/loveis715/p/4596551.html
https://blog.csdn.net/qq_18505715/article/details/76696439