首页 文章

捕捉异常和反思

提问于
浏览
3

我是Java场景的新手,但目前正在进行指定的评估 . 我想知道是否有办法在类函数中捕获异常并抛出另一个异常,因此调用类函数的函数不需要知道抛出的第一个异常 .

例如

public void foo() throws MasterException {
    try {
        int a = bar();
    } catch (MasterException e) {
        //do stuff
    }
}

public void bar() throws MasterException, MinorException {
    try {
        int a = 1;
    } catch (MinorException e) {
        throw new MasterException();
    }
}

我希望这个例子能够解释我想要实现的目标 . 基本上我希望调用函数不要知道 MinorException .

5 回答

  • 1

    绝对 . 你想改变这一行:

    public void bar() throws MasterException, MinorException
    

    对此:

    public void bar() throws MasterException
    

    其他所有东西都应该与你如何写它完全一致 .

  • 0

    我会从foo()中删除MasterException,因为你正在捕获它,而其他答案说,来自bar()的MinorException .

    此外,如果MasterException或MinorException是RuntimeException的子类,则无需声明它 . 参见例如http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html

  • 0

    只需从bar()的throws子句中删除MinorException .

  • 3
    • 从方法 foo() 的声明中删除 throws MasterException ,原因很清楚,MasterException已经准备好了,所以无论如何都不会发生 .

    • 从方法 bar() 的声明中删除 , MinorException .

  • 1

    bar 的声明中删除 , MinorException ,你就完成了 . 我也会这样做:

    throw new MasterException(e);
    

    如果 MasterException 有一个支持它的构造函数(它的标准, Exception 类) .

相关问题