对于不可能的条件,应该抛出什么错误?

时间:2015-04-21 16:24:20

标签: java exception

public static double findLCM (int num1, int num2) {

        for (int i = 1; i <= num2; i++) {
            double mult = big * i;
            if (mult % small == 0) {
                return mult;
            }
        }
        throw new Error("Error");
    }

众所周知,不可能没有LCM。在断开for循环等之后,请不要建议我使用返回变量等代码的变通方法。此代码是自定义的,用于理解要抛出的异常。

3 个答案:

答案 0 :(得分:1)

最贴合的可能是IllegalArgumentException

  

抛出以表明方法已被传递为非法或不恰当的参数。

答案 1 :(得分:0)

我认为你可以使用Exception

你可以说:

throw new Exception("Error");

这将解决您的问题。我不是100%肯定,但它对我有用很多次。

答案 2 :(得分:0)

由于这是一个高级别的搜索结果,我觉得有必要添加回复。 @UnknownJoe对我认为应该是一般情况的正确答案的问题发表评论,而@ manouti的回答(已接受)是具体案例的正确答案。

如果由于将无效参数传递给方法而在程序执行期间有可能访问某段代码,则IllegalArgumentException是抛出的正确异常;毕竟,这是一个非法的论点,导致该代码被执行。在提供的示例中,如果我将0 in作为第二个参数传递,则会抛出异常。

我的个人用例是使用MessageDigest算法。由于已经提供了一组已知的算法since Java 1.5,我可以随意直接引用任何这些算法,而不用担心潜在的NoSuchAlgorithmException。虽然我可以吞下异常,但如果我的代码在非标准实现上运行,或者如果环境出现问题,那么将它包装在IllegalStateException中允许我将其传递给链。但更重要的是,我知道为什么我的程序失败了。

简而言之:如果通过提供无效参数可以意外访问您的代码,请使用InvalidArgumentException。如果您的代码无法正常访问且仅受JVM的影响,请使用IllegalStateException