抛出异常并将值设置为0

时间:2016-12-18 17:14:31

标签: java

我正在尝试创建一个方法来检查给定的参数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块吗?什么是最好的方法,我知道上面的代码不能正常工作,但我无法弄清楚这一点。

1 个答案:

答案 0 :(得分:5)

您的方法不能同时抛出异常并返回更新的x。它可以 抛出异常,或者它可以返回一个值。这些是互斥的选择。在您抛出的情况下将x设置为0称为&#34;死存储&#34; (因为当控制离开方法时x不再存在,因此存储在其中的值永远不会用于任何事物。)

通过让它接受单条目数组或自定义包装器对象,然后让它使用副作用来更改数组中该条目的值,可以使它做两种操作。在抛出异常之前该包装器对象上的属性,但它不太可能是解决您尝试解决的任何问题的正确方法。