gpt4 book ai didi

java - 返回整数或 double 时如何确保 catch 返回值不同于 try 返回值

转载 作者:行者123 更新时间:2023-12-04 16:10:07 24 4
gpt4 key购买 nike

大家好,这是我的第一个问题,如果之前有人回答过这个问题,我深表歉意,但我找不到问题的答案,所以我把它贴在这里。

如果你的方法有一个返回值,可以是正数,也可以是负数,并且你不确定返回值的范围,如果你得到一个异常,你应该返回什么值?

例如在下面的方法中-

public double calculateDifference(String studentName, String quizName) {
try {
Quiz quiz = quizDAO.retrieve(quizName);
double averageScore = quiz.getAverageScore();
Student student = quiz.getStudent(studentName);
double score = student.getScore();
return score - averageScore;
} catch (NullPointerException e) {
return -1;
}
}

假设score和average score有一个很大的范围,如果我的catch中的返回值等于没有异常时返回的值呢?

例如score=2,平均score=3,所以我会得到-1作为返回值。

当我得到返回值时,我不确定是否捕获了异常。

我想我想问的是,是否有办法在被捕获时返回一个唯一的 double 值,该值不会与其他可能的返回值冲突。

最佳答案

很简单:NullPointerExceptions错误

你没有捕获他们。

调试它们以了解它们的原因,然后解决问题。故事结局。

是的,当您有一个非常庞大的应用程序时,您的顶层可以捕获 RuntimeException - 但只是记录该信息并以某种方式向您的用户提供有用的消息。

是的,您可以捕获某些 RuntimeExceptions,例如在解析本应为数字的输入字符串时出现的 NumberFormatException。但如前所述,捕获 NPE 以返回 -1 是完全错误的。它隐藏了一个错误条件,并且几乎不可能预测您的代码将如何从那里继续。

在您的特定情况下:只需确保您不使用空参数调用该方法。或者,如果你真的想允许传递空参数,你可以放一些像

这样的东西
Objects.requireNonNull(var, "var must not be null) 

在您的方法的第一行(检查每个可能为空的参数)。然后,您至少要明确指出传递 null 将使该方法抛出 npe,即使有一个清晰的错误消息也是如此。

关于java - 返回整数或 double 时如何确保 catch 返回值不同于 try 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43956524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com