我收到此错误:"未报告的异常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 () );
}
我如何宣布它?
答案 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
确实发生。