为什么没有将例外添加到签名中?

时间:2014-04-24 14:37:16

标签: java android

我一直在浏览主要的Android SDK(Facebook,Google +,甚至是Android)。我注意到的是,异常似乎从未包含在方法签名中。相反,我看到的是异常被抛出,但通常只在文档中列出(如果你很幸运)。

这种做法有什么用?是否有一些宣言声明方法签名中的异常邪恶?

实施例: 来自android.database.AbstractCursor

  

void checkPosition()

     

此函数抛出    如果光标位置不在,则为CursorIndexOutOfBoundsException   界限。

为什么这样而不是

void checkPosition() throws CursorIndexOutOfBoundsException

我更喜欢后者,因为你可以设置你的IDE /编译器来实际警告你,而不是只是祈祷文档提到文件中提到的实际被抛出的东西。

2 个答案:

答案 0 :(得分:6)

这是因为CursorIndexOutOfBoundsException是一个RuntimeException。它不是一个经过检查的例外。

http://developer.android.com/reference/android/database/CursorIndexOutOfBoundsException.html

答案 1 :(得分:1)

在您的确切示例中,这是有用的信息。

只有在调用代码中存在严重错误的情况下才会抛出此异常,因此在编写运行时异常的try/catch时没有意义,这在生产中不会发生,并且在那里&#39没有必要弄乱签名。