为什么我们需要 Java 中的 throw 关键字?

在这个答案中,提供的代码是:


void greet(String name) {

    if (name == null) {

        throw new IllegalArgumentException("Cannot greet null");

    }

    System.out.println("Hello, " + name);

}

我在所有学习“投掷”关键字的网站上都看到了类似的例子。每当我看到这样的例子时,对我来说没有意义的是为什么一个人根本不打印:“Cannot greet null”而不是抛出异常。

问题:

  1. 是否有更好的throw关键字效用示例?(我刚从高中毕业,只知道高中级别的 Java 编程,所以请避免复杂的例子)

  2. 在给定的示例中,为什么用户选择抛出异常而不是简单地打印错误?


BIG阳
浏览 128回答 3
3回答

墨色风雨

现在是时候修改 Java 中异常处理的概念了。首先什么是异常,每当在执行代码行时出现一些错误或说问题,它被称为异常。例如,如果一个人将某物除以 0,那么它将给出一个异常,因为计算机无法处理未定义的实体。另一个例子是,当您声明了一个 Scanner 以获取整数输入时,但用户输入了一个字母,因此它也会导致异常。这里我们进行异常处理,这意味着我们将以不会导致程序关闭的方式处理异常,那些已经包含在 try 和 catch 语句中的特定行将无法正常工作,但其他行将被执行。现在,如果我们创建了一个方法来做某事,让我们假设打印一行,并且在打印该行时发生了异常,在这里我们可以做两件事来处理异常发生的地方或抛出它。如果我们在那个地方处理异常就可以了,如果我们抛出它,那么我们必须在调用该方法的地方捕获它。现在有两种类型的异常 1)我们称之为未检查异常的运行时异常 2)我们称之为已检查异常的编译时异常这两种异常都可以在类级别和方法级别进行处理,我们还可以做一件事链式异常处理。这意味着一个类将向其他类抛出异常,依此类推。

扬帆大鱼

我认为以下答案可以帮助您理解....是否有更好的 throw 关键字实用性示例?基本上Throw,Throws用于防止应用程序因抛出异常而出错或崩溃。 Throws在方法签名Throw中使用,用于防止流程出错。所以这里有一个简单的例子。    public class Test {    // here we have used "throws" in method signature     //   because we are throwing new Exception(), if array is null    public static int getValue(int[] array, int index) throws Exception {        // here we are preventing application from getting         // unconditional error (NullPointer exception)        // if array is null, then we are throwing new Exception()        if(array == null) {            throw new Exception();        }        int value = array[index];         return value;    }    public static void main(String[] args) {        int[] array = null;        // here we are wrapping our getValue() function call to try catch block        // because getValue() function can throws Exception        // so we are making it safe to execute our program        try {            int value = getValue(array, 0);            System.out.println("value " + value);        } catch (Exception e) {            System.out.println("Provided array is null... so we caught the exception...");        }    }}如果您想更多地了解 throw 和 throws 的工作原理……那么您还需要了解异常处理(已检查和未检查)。在给定的示例中,为什么用户选择抛出异常而不是简单地打印错误?根据给定的示例,您的函数目的是打招呼,但如果其他函数调用greet()为空值,则没有任何理由打招呼 like Hello, null,因此他在执行语句之前抛出异常。像...    void greet(String name) {        System.out.println("Hello, " + name);    }    String myName = null;    greet(myName); // it will print "Hello, null";

心有法竹

'Throw' 关键字用于通知调用者传递的参数无效(在这种情况下),或者通常在执行调用者调用的代码时出现问题。考虑一个您正在编写在线购物应用程序的示例。以下是简单的事件序列:用户滚动项目并选择一个或多个项目物品被添加到购物车中,用户点击结帐用户被重定向到第 3 方的付款页面,他在其中输入卡详细信息并进行付款向用户显示成功页面现在,在付款过程中,如果卡号不正确或用户卡中没有足够的余额,您是将错误返回给调用者(即购物应用程序)还是将其记录在控制台(在支付提供商方面)并返回响应?当然是前者,所以这只是为了让调用者知道存在错误并且他应该优雅地处理它(在我们的例子中通过在结帐时显示适当的消息)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java