如果我调用一个方法,该方法调用另一个抛出异常的方法,但这是一个IndexOutOfBoundsException,我必须在我需要使用的每个方法中抛出这个异常,或者我可以将它抛到第一个方法中,然后在最后调用它。
我能这么做吗?
public static void b() {
a();
}
public static void a() throws IndexOutOfBoundsException {
}
public static void main(String[] args) {
try {
b();
} catch (IndexOutOfBoundsException iEx) {
//Manage exception
}
}我不打算使用IndexOutOfBoundsException作为检查异常,因为我正在读取一个.ini文件,以获得一个数组,其中包含一些我需要的数据,以便稍后将它们提供给数据源(BoneCp),以管理我的连接。如果.ini目前没有包含所需的信息,我就无法知道它,所以我不打算以这种方式处理它(不是一个大应用程序)。但是,我也想知道正常检查异常的行为是什么。
发布于 2013-11-06 21:11:57
IndexOutOfBounds是一个RuntimeException,这意味着它不是一个检查过的异常。因此,您不需要在方法签名中声明它,我甚至可以说,您的不应该是(在Javadocs中应该提到它)。这样做使得它对其检查/未检查的性质有点模糊。由于未检查异常,因此也不需要在b的方法签名中声明它。然而,如果这是一个检查异常,您将不得不声明它。
发布于 2013-11-06 21:31:33
我认为这里的问题是,您依赖错误的异常使您的程序崩溃。如果您正在读取一个文件,并且希望在其中包含特定的内容,则应该使应用程序抛出一个显式提到该内容的错误。例如,如果您有一个解析文件的方法,您可以在其中捕获IndexOutOfBounds异常并抛出一个new RuntimeException("some interesting message", e);异常(其中e是您的IOOB异常)。仅IOOB异常给您的用户提供了什么样的信息?
https://stackoverflow.com/questions/19822808
复制相似问题