未报告的异常IOException ...必须被捕获或声明被抛出

时间:2017-03-13 17:26:48

标签: java exception compiler-errors

我收到此错误:"未报告的异常IOException;必须被抓住或宣布被扔掉#34;在这段代码中:

rename_col_by_position(df, 2, `qux quux`)

# # A tibble: 2 x 2
#   `qux quux`   foo
#        <chr> <int>
# 1          a     1
# 2          b     2

以下是代码的其余部分:

 a = Double.parseDouble ( kb.readLine () ) ;
 b = Double.parseDouble ( kb.readLine () ) ;
 c = Double.parseDouble ( kb.readLine () ); 

}

我如何宣布它?

2 个答案:

答案 0 :(得分:3)

readLine()声明它会抛出IOException。这是一个经过检查的异常,这意味着您不能忽略它。你需要抓住它,例如:

try {
    a = Double.parseDouble ( kb.readLine () ) ;
} catch (IOException e) {
    System.out.println("Can't read a"); // Or something more intellegent
}

或者,如果您没有任何智能方法来处理它,您可以通过将此异常添加到调用方的签名来向上抛出它,例如:

public static void main (String [] args) throws IOException {

答案 1 :(得分:1)

在Java中,在处理异常时,根据经验,您必须处理(捕获)异常 OR 只需声明它。

在您的情况下,最好通过将代码包装在try块中来捕获(处理)异常。 您不应该使用规则的Declare部分,因为当您声明 somemethodA()抛出 XYZException 时,调用堆栈中应该有一些其他方法处理/声明这个XYZException 在这里,你不能声明main方法抛出IOException,因为如果main开始抛出异常,那么没有任何东西捕获它,因为main()方法位于调用堆栈的底部。

代码中使用的BufferedReader的readLine()方法会抛出IOException。你应该使用try / catch,只要readLine()方法被用来让程序正常退出,以防任何IOExeption确实发生。