为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

BIG阳 2022-04-28 15:55:43
在这个答案中,提供的代码是:void greet(String name) {    if (name == null) {        throw new IllegalArgumentException("Cannot greet null");    }    System.out.println("Hello, " + name);}我在所有学习“投掷”关键字的网站上都看到了类似的例子。每当我看到这样的例子时,对我来说没有意义的是为什么一个人根本不打印:“Cannot greet null”而不是抛出异常。问题:是否有更好的throw关键字效用示例?(我刚从高中毕业,只知道高中级别的 Java 编程,所以请避免复杂的例子)在给定的示例中,为什么用户选择抛出异常而不是简单地打印错误?
查看完整描述

3 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

现在是时候修改 Java 中异常处理的概念了。

首先什么是异常,每当在执行代码行时出现一些错误或说问题,它被称为异常。

例如,如果一个人将某物除以 0,那么它将给出一个异常,因为计算机无法处理未定义的实体。

另一个例子是,当您声明了一个 Scanner 以获取整数输入时,但用户输入了一个字母,因此它也会导致异常。

这里我们进行异常处理,这意味着我们将以不会导致程序关闭的方式处理异常,那些已经包含在 try 和 catch 语句中的特定行将无法正常工作,但其他行将被执行。

现在,如果我们创建了一个方法来做某事,让我们假设打印一行,并且在打印该行时发生了异常,在这里我们可以做两件事来处理异常发生的地方或抛出它。

如果我们在那个地方处理异常就可以了,如果我们抛出它,那么我们必须在调用该方法的地方捕获它。

现在有两种类型的异常 1)我们称之为未检查异常的运行时异常 2)我们称之为已检查异常的编译时异常

这两种异常都可以在类级别和方法级别进行处理,我们还可以做一件事链式异常处理。这意味着一个类将向其他类抛出异常,依此类推。


查看完整回答
反对 回复 2022-04-28
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

我认为以下答案可以帮助您理解....


是否有更好的 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";


查看完整回答
反对 回复 2022-04-28
?
心有法竹

TA贡献1866条经验 获得超5个赞

'Throw' 关键字用于通知调用者传递的参数无效(在这种情况下),或者通常在执行调用者调用的代码时出现问题。

考虑一个您正在编写在线购物应用程序的示例。以下是简单的事件序列:

  • 用户滚动项目并选择一个或多个项目

  • 物品被添加到购物车中,用户点击结帐

  • 用户被重定向到第 3 方的付款页面,他在其中输入卡详细信息并进行付款

  • 向用户显示成功页面

现在,在付款过程中,如果卡号不正确或用户卡中没有足够的余额,您是将错误返回给调用者(即购物应用程序)还是将其记录在控制台(在支付提供商方面)并返回响应?当然是前者,所以这只是为了让调用者知道存在错误并且他应该优雅地处理它(在我们的例子中通过在结帐时显示适当的消息)。


查看完整回答
反对 回复 2022-04-28
  • 3 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信