java - 为什么我们需要 Java 中的 throw 关键字?
问题描述
在这个答案中,提供的代码是:
void greet(String name) {
if (name == null) {
throw new IllegalArgumentException("Cannot greet null");
}
System.out.println("Hello, " + name);
}
我在所有学习“投掷”关键字的网站上都看到了类似的例子。每当我看到这样的例子时,对我来说没有意义的是为什么一个人根本不打印:“Cannot greet null”而不是抛出异常。
问题:
是否有更好的
throw
关键字效用示例?(我刚从高中毕业,只知道高中级别的 Java 编程,所以请避免复杂的例子)在给定的示例中,为什么用户选择抛出异常而不是简单地打印错误?
解决方案
现在是时候修改 Java 中异常处理的概念了。
首先什么是异常,每当在执行代码行时出现一些错误或说问题,它被称为异常。
例如,如果一个人将某物除以 0,那么它将给出一个异常,因为计算机无法处理未定义的实体。
另一个例子是,当您声明了一个 Scanner 以获取整数输入时,但用户输入了一个字母,因此它也会导致异常。
这里我们进行异常处理,这意味着我们将以不会导致程序关闭的方式处理异常,那些已经包含在 try 和 catch 语句中的特定行将无法正常工作,但其他行将被执行。
现在,如果我们创建了一个方法来做某事,让我们假设打印一行,并且在打印该行时发生了异常,在这里我们可以做两件事来处理异常发生的地方或抛出它。
如果我们在那个地方处理异常就可以了,如果我们抛出它,那么我们必须在调用该方法的地方捕获它。
现在有两种类型的异常 1)我们称之为未检查异常的运行时异常 2)我们称之为已检查异常的编译时异常
这两种异常都可以在类级别和方法级别进行处理,我们还可以做一件事链式异常处理。这意味着一个类将向其他类抛出异常,依此类推。
推荐阅读
- c - 为什么我的 CUDA 内核似乎什么都不做?
- python - libgssapi_krb5.so.2:无法打开共享对象文件:没有这样的文件或目录
- python - 文件路径和文件名中的“Ü”等德语特殊字符 - 无法将路径用作字符串
- scala - 为什么 scala Try-match 匹配 Throwable 为成功
- json - TableView的无限滚动分页
- python - 更改 python 版本后找不到模块错误
- python - 从元组列表中查找最近的元组 - Python
- c# - # 后打开带有参数的本地 html 文件
- php - Laravel 不在代码文件夹中创建项目
- c# - 时间:2019-05-10 标签:c#specific sequence keypress event anywhere in form