java - 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。
解决方案
通常,您的函数在函数或 return 语句的末尾退出。
但是,函数也可以在到达throw
语句时退出。如果异常是子类Exception
,则函数的调用者必须用块包围函数调用try { } catch { }
。如果异常子类RuntimeException
,您可以选择将函数调用包围在 try catch 块中。
如果您查看 JavaDoc NumberFormatException
:https ://docs.oracle.com/javase/7/docs/api/java/lang/NumberFormatException.html将看到它的子类RuntimeException
。这意味着您的 try-catch 块是可选的。这两个程序之间的区别在于:使用 try-catch 块,您将被Convertion Error
打印到控制台,没有它,您将看到完整的堆栈跟踪。这通常被称为“吞下异常”。
推荐阅读
- windows - 为什么wsl2 wslconfig文件不起作用?
- java - 如何创建一种方法来生成所有可能的布尔函数?
- swift - swift中的标注按钮和firestore出现问题
- rx-java - RxJava - 在 map 和 doOnSuccess 中执行长时间运行任务的任何问题
- php - PHP | 未在数据库中加载 CSV 数据
- html - HTML的value属性如何标签工作?
- firebase - Firebase 翻译文本扩展 - 是否可以翻译嵌套集合中的字段?
- java - 我在没有“catch”、“finally”或资源声明的情况下遇到错误,我该如何在下面的代码中解决这个问题
- rust - 是否可以仅使用“macro_rules!”来实现这个宏?
- random - 选择随机枚举值的简单且安全的方法是什么?