我正在尝试创建一个方法来检查给定的参数x是否为< 0,如果是,则抛出异常并将x设置为0,否则它只返回x。
InvalidParameterException
这是我的代码
private static double mayBePositive(double x, String msg){
if (x < 0){
x = 0;
throw new InvalidParameterException(msg);
}
return x;
}
问题是我应该使用try块吗?什么是最好的方法,我知道上面的代码不能正常工作,但我无法弄清楚这一点。
答案 0 :(得分:5)
您的方法不能同时抛出异常并返回更新的x
。它可以 抛出异常,或者它可以返回一个值。这些是互斥的选择。在您抛出的情况下将x
设置为0
称为&#34;死存储&#34; (因为当控制离开方法时x
不再存在,因此存储在其中的值永远不会用于任何事物。)
通过让它接受单条目数组或自定义包装器对象,然后让它使用副作用来更改数组中该条目的值,可以使它做两种操作。在抛出异常之前该包装器对象上的属性,但它不太可能是解决您尝试解决的任何问题的正确方法。