当前位置: 首页 > 面试题库 >

如何在Java中抛出除以零的异常而不实际除以零?

华章横
2023-03-14
问题内容

我有一个I2C设备,需要两个输入:分母和分子。两者均被写入不同的地址,因此不进行实际计算(numerator/denominator)。问题在于,I2C器件上可能会发生被零除的情况,因此需要检查被零除的错误。理想情况下,如果除法是通过Java代码完成的,则将发生完全相同的事情。

目前,我已经绑定了一个用于进行除法运算的未使用变量,但是我担心它会被优化:

public void setKp(int numerator, int divisor)
{
    int zeroCheck = numerator / divisor;
    //... doesn't use zeroCheck
}

当然,有更好的方法!


问题答案:

你应该 不是
抛出一个ArithmeticException。由于错误在于提供的参数中,请抛出一个IllegalArgumentException。如文档所述:

抛出该错误以指示方法已传递了非法或不适当的参数。

这正是这里正在发生的事情。

if (divisor == 0) {
    throw new IllegalArgumentException("Argument 'divisor' is 0");
}


 类似资料:
  • 参考第25行(我的for循环条件)。 循环工作得很好,直到我尝试将Digit的值转换为int,我不确定为什么这会导致循环的任何部分将某物除以零。我已经讨论了所有关于使用有理表达式的条件的可能性,不能推导出任何分母都为零的偶然性。无论输入什么数字,我都会得到这个错误。如果不是因为我的教授在一个测试用例中提供了一个数值超过了可以存储在int中的数值,我根本不会选择将number保存为double。该程

  • 我做java已经4个月了,所以我还是一个业余爱好者。只是想搞定一些hwk。我似乎找不到正确的技巧来让我的分母通过拒绝文本数据和零,同时保持循环错误消息来很好地发挥作用。另一个问题是,无论分子/分母是什么,我的商都是0.0。有很多问题,任何建议都很感谢。指示如下: --这个程序接受用户输入的(int)分子和(int)分母,然后计算并显示(双)商。 --如果用户为分子输入的是文本而不是数字,则显示一条

  • 为什么这段代码不抛出?看一看: 我不知道!

  • 问题内容: 有人可以解释此代码吗? 看起来似乎很奇怪,但这不会产生强制转换异常,并允许抛出已检查的异常而不必在签名中声明它或将其包装在未检查的异常中。 注意,或者main都没有声明任何检查过的异常,但是输出是: 在Lombok中使用此hack,带有@SneakyThrow批注,该批注允许抛出已检查的异常而无需声明它们。 我知道它与类型擦除有关,但是我不确定要了解hack的每个部分。 编辑: 我知道

  • 问题内容: 当我在Python中进行浮点除法时,如果除以零,则会出现异常: 我真的很想得到或取而代之(因为或会正确传播到计算的其余部分,而不会杀死我的程序)。 我怎样才能做到这一点? 问题答案: 实现此行为的最简单方法是使用而不是Python默认类型: 当然,这需要NumPy。您可以用来微调错误处理。

  • @apiResponse似乎也没有更正响应类型。 如本问题所述,如何在swagger Codegen中处理多个响应/返回类型(204为空,400为非空等)? 我可以这样扔 但是有没有更好的方法来做到这一点呢?我只想将.getResponseBody()作为对象而不是字符串返回。 非常感谢。