Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 捕获异常和重新刷新_Java_Exception_Throw - Fatal编程技术网

Java 捕获异常和重新刷新

Java 捕获异常和重新刷新,java,exception,throw,Java,Exception,Throw,我是Java领域的新手,但目前正在进行指定的评估。我想知道是否有一种方法可以捕获类函数内部的异常并抛出另一个异常,这样调用类函数的函数就不需要知道抛出的第一个异常 比如说 public void foo() throws MasterException { try { int a = bar(); } catch (MasterException e) { //do stuff } } public void bar() throws M

我是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

。您要更改此行:

public void bar() throws MasterException, MinorException
为此:

public void bar() throws MasterException

其他一切都应该按照您编写的方式进行。

只要从bar()的throws子句中删除MinorException。

bar的声明中删除
,MinorException
,您就完成了。 我还想:

throw new MasterException(e);

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

我会在捕获它时从foo()中删除MasterException,正如其他答案所说,从bar()中删除MinorException

此外,如果MasterException或MinorexException是RuntimeException的子类,则不需要声明它。见例

  • 从方法
    foo()
    的声明中删除
    抛出MasterException
    ,原因很明显,MasterException已被捕获,因此无论如何都不会发生


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


  • 除了在
    bar()
    上保持
    throws MinorException
    之外,这看起来你已经完全完成了你的要求。没有必要在bar
    s
    throws`子句中列出MinorException。谢谢伙计,我来自c/c++背景,从未真正使用过异常。异常是福也是祸,当他们被检查时,他们大多是一个诅咒。抓住这个重新投掷的概念就像是“掌握”它们的好步骤。我总是认为他们是C++中的诅咒。@你能解释一下为什么抓和再投是一件好事吗?我希望我没有劫持原来的问题。如果是,apologies@Kaushik请忽略/忘记这一点。英语是我的第二语言,我试着说一些与你读到的完全不同的东西。我只是在脑海中编造了一个例外的名字,我没有使用这些例外,只是一个例子。