Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 抛出异常或返回值_Java_Exception Handling_Coding Style - Fatal编程技术网

Java 抛出异常或返回值

Java 抛出异常或返回值,java,exception-handling,coding-style,Java,Exception Handling,Coding Style,我的问题很简单。 我有一门课叫三角形。这个类有一个方法 public boolean isAnyAngleGreaterThan(double deg); 我的问题如下: 如果'deg'不在0

我的问题很简单。 我有一门课叫三角形。这个类有一个方法

    public boolean isAnyAngleGreaterThan(double deg);
我的问题如下:

如果'deg'不在0<'deg'<180范围内,我应该抛出illegalArgumentException吗?如果deg=180,我应该简单地返回TRUE吗?

或者哪一个是最好的

1

public boolean isAnyAngleGreaterThan(double deg) {
    if (Double.compare(0, deg) >= 0) {
        throw new IllegalArgumentException("Angle (deg) can't be negative.");
    } else if (Double.compare(180, deg) <= 0) {
        throw new IllegalArgumentException("Angle (deg) can't be greater or equal than 180.");
    }

    return Double.compare(aDeg, deg) > 0
            || Double.compare(bDeg, deg) > 0
            || Double.compare(cDeg, deg) > 0;
}
其中“aDeg”、“bDeg”和“cDeg”是三角形中的角度a、b和c。

一般规则是:不要使用异常作为流量控制

因此:

  • 如果该方法的结果导致其他结果,然后稍后抛出异常,则应返回
    布尔值

  • 如果此方法的结果用于确定是否需要抛出异常,则该方法可以抛出异常本身(应该是
    void

一般规则是:不要将异常用作流控制

因此:

  • 如果该方法的结果导致其他结果,然后稍后抛出异常,则应返回
    布尔值

  • 如果此方法的结果用于确定是否需要抛出异常,则该方法可以抛出异常本身(应该是
    void


就个人而言,您的函数意味着一个基本检查-三角形是否有任何角度大于参数。这并不表示角度有限制,因此只应返回
true
/
false
值。但是,如果使用用户定义的参数调用此函数,则可能会使验证/错误反馈更容易返回指示参数无效的异常


这确实是你的语义/个人偏好的问题。这实际上取决于你想要你的函数做什么

就个人而言,你的函数意味着一个基本的检查——三角形是否有任何角度大于参数。这并不表示角度有限制,因此只应返回
true
/
false
值。但是,如果使用用户定义的参数调用此函数,则可能会使验证/错误反馈更容易返回指示参数无效的异常


这确实是你的语义/个人偏好的问题。这实际上取决于你想要你的函数做什么

如果度小于或等于0,您可能会抛出
IllegalArgumentException
,如果度大于180,则返回false


前者的原因是多边形中的角度在数学意义上总是正的。后者的原因是多边形的角度可能大于180,当然不是三角形,但在一般数学意义上,角度大于180度是有效的。

如果角度小于或等于0,则可能抛出
IllegalArgumentException
,如果角度大于180,则返回false


前者的原因是多边形中的角度在数学意义上总是正的。后者的原因是多边形的角度可能大于180度,当然不是三角形,但从一般数学意义上讲,角度大于180度是有效的。

我从物体的名称推测,这个物体是用来表示三角形的。因此,它将驻留在通常称为
模型的代码区域中,该区域通常包含系统的状态

因此,我几乎从不在这里执行有效性检查。参数验证应尽可能在最浅的位置进行,即尽可能靠近输入/读取值的位置。这就是范式

这是一个核心对象。它不应负责参数检查,正如它不应负责访问结果的安全性或对其返回的结果进行加密一样

只有在某些参数可能导致其他问题时,才应该验证模型代码中的参数。在您的情况下,由于您所比较的是其他
双值
值,因此应该没有任何问题


例如,如果要执行的某些计算可能会导致异常(如被零除)或其他不良影响,那么在这种情况下,快速失败并检查零值并引发异常是正确的。

根据对象的名称,我推测此对象旨在表示三角形。因此,它将驻留在通常称为
模型的代码区域中,该区域通常包含系统的状态

因此,我几乎从不在这里执行有效性检查。参数验证应尽可能在最浅的位置进行,即尽可能靠近输入/读取值的位置。这就是范式

这是一个核心对象。它不应负责参数检查,正如它不应负责访问结果的安全性或对其返回的结果进行加密一样

只有在某些参数可能导致其他问题时,才应该验证模型代码中的参数。在您的情况下,由于您所比较的是其他
双值
值,因此应该没有任何问题


例如,如果要执行可能导致异常的某些计算(例如除以零)或者其他一些不良影响,在这种情况下,正确的做法是快速失败,检查零值并抛出异常。

如果你想继续你的流程,你可以返回布尔值,否则你需要停止,你可以抛出异常,处理异常是一项非常繁忙的任务。异常通常由开发人员和handl抛出
public boolean isAnyAngleGreaterThan(double deg) {
    return Double.compare(aDeg, deg) > 0
            || Double.compare(bDeg, deg) > 0
            || Double.compare(cDeg, deg) > 0;
}