我是JAVA中异常处理的新手。我有一些基本的问题:
Inside First.java:
public void foo ()
{
Second obj = new Second();
obj.boo();
}
Inside Second.java
public void boo()
{
try { /* may throw some I/O Exception here */ }
catch (IOException e) { System.err.println(e.message()); }
catch (Exception e) { System.err.println(e.message()); }
}
我的问题是,我们是否需要(我们是否应该)在First.java的foo()方法中添加try / catch块?
答案 0 :(得分:1)
您不需要,但如果您不想在boo()中处理它,您可以执行以下操作:
public void boo() throws IOException{
...
}
public void foo(){
try{
boo();
}catch(IOException ioe){ System.out.println(ioe.message());}
}
但你所拥有的应该可以正常工作。希望有所帮助!
答案 1 :(得分:0)
不,这实际上是编译错误(或警告?),因为boo
是非投掷的(除非Second
的构造函数抛出)。试试吧。
答案 2 :(得分:0)
由于您在boo()方法中捕获异常,因此您也没有。
但相反,如果您为调用方法抛出异常来处理它,则必须在那里处理异常..
public void boo() throws IOException{
//something raising IOException
}
public void foo(){
try{
Sound obj = new Sound();
obj.boo();
} catch(IOException io) {
//handle your exception
}
}
如果你不想在foo()方法中处理异常,你可以选择再次抛出它:
public void foo() throws IOException{
//your code here
}
再次调用foo()的方法必须处理异常,否则会导致异常