在java中使用throws命令

时间:2018-05-31 20:32:49

标签: java exception-handling try-catch throws

我知道这样的问题无处不在,但我读了很多关于此事的内容,我仍然无法理解“throws”命令的作用。我现在会更具体:

所以,我看到的一个例子是this one,其代码如下:

public class CatchThrow {

private static void throwsMethod() throws NumberFormatException {
    String  intNumber = "5A";

    Integer.parseInt(intNumber);
}

private static void catchMethod() {
    try {

        throwsMethod();

    } catch (NumberFormatException e) {
        System.out.println("Convertion Error");
    }

}

public static void main(String[] args) {
    // TODO Auto-generated method stub

    catchMethod();
}

}

现在,如果我从“throwsMethod”方法中删除“throws NumberFormatException”,程序将运行相同的操作,并将给出相同的结果。实际上,我看到的每个带有throws命令的例子都是一样的,所以我真的不明白为什么要使用它。

我正在使用Eclipse IDE,版本4.7.2。

2 个答案:

答案 0 :(得分:0)

通常,函数会在函数或return语句的末尾退出。

但是,函数在到达throw语句时也可以退出。如果异常子类Exception,则函数的调用者必须使用try { } catch { }块包围函数调用。如果异常子类RuntimeException你可以选择在try catch块中包围函数调用。

如果你看一下NumberFormatException的JavaDoc:https://docs.oracle.com/javase/7/docs/api/java/lang/NumberFormatException.html会看到它的子类RuntimeException。这意味着您的try-catch块是可选的。两个程序之间的区别在于:使用try-catch块,您将获得Convertion Error打印到控制台,没有它,您将看到完整的堆栈跟踪。这通常被称为"吞下例外"。

答案 1 :(得分:0)

所以基本上,如果发生异常并且您不想在那里处理该异常,那么在这种情况下,您使用'throw'关键字只是在发生异常时抛出异常。

示例:这里,在throwsMethod()中,您没有处理异常处理,即不使用try(),catch()块,如果发生任何异常,您只是抛出它。如果throwsMethod()中发生异常,您将进入catch()块。

为了更好的想法,你应该阅读已检查的& Java中的未解决的异常。对于Checked异常(在编译时发生),我们使用'throw'关键字,对于Unchecked(运行时),我们使用try()catch()。

示例:NumberFormatException是一个未经检查的异常,IOException是一个Checked异常。

阅读本文以供参考:https://www.geeksforgeeks.org/checked-vs-unchecked-exceptions-in-java/