首页 > 解决方案 > java中throws命令的使用

问题描述

我知道这样的问题无处不在,但我读了很多关于这个的东西,我仍然无法理解“抛出”命令的作用。我现在将更具体:

所以,我看到的例子之一就是这个,代码如下:

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。

标签: javaexception-handlingtry-catchthrows

解决方案


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

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

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


推荐阅读