我有一个i2c设备,需要两个输入:分母和分子。两者都写在不同的地址,所以没有实际的计算( numerator/denominator
)完成了。问题是i2c设备上可能会出现被零除的情况,因此需要检查被零除的错误。理想情况下,如果用java代码进行除法,同样的事情也会发生。
目前,我已经预感到一个未使用的变量会进行除法,但我担心它会得到优化:
public void setKp(int numerator, int divisor)
{
int zeroCheck = numerator / divisor;
//... doesn't use zeroCheck
}
当然有更好的办法!
5条答案
按热度按时间41ik7eoe1#
nimxete22#
比如:
5lhxktic3#
你不应该抛出算术异常。因为错误在提供的参数中,所以抛出
IllegalArgumentException
. 正如文件所说:抛出以指示已向方法传递非法或不适当的参数。
这正是这里发生的事情。
ds97pgxw4#
请执行以下操作:
算术异常是通常在除以0时引发的异常。
f2uvfpb95#
有两种方法可以做到这一点。要么创建自己的自定义异常类来表示被零除的错误,要么抛出与java运行时在这种情况下抛出的异常类型相同的异常。
定义自定义异常
然后在代码中检查除数是否为零并引发以下异常:
抛出算术异常
在代码中添加检查除以零并引发算术异常:
此外,您可以考虑引发非法参数异常,因为零除数是传递给setkp()方法的不正确参数: