Java 对于不可能的情况,应该抛出什么错误? 公共静态双findLCM(int num1,int num2){ 对于(int i=1;i
而言,最接近的拟合可能是: 抛出以指示已向方法传递非法或不适当的参数Java 对于不可能的情况,应该抛出什么错误? 公共静态双findLCM(int num1,int num2){ 对于(int i=1;i,java,exception,Java,Exception,而言,最接近的拟合可能是: 抛出以指示已向方法传递非法或不适当的参数 我想你可以用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
我想你可以用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");
}
这将解决您的问题。我不是100%确定,但它为我工作了很多次。因为这是一个高级别的搜索结果,我觉得有必要添加一个响应。@UnknownJoe对这个问题发表了评论,我认为这应该是一般情况下的正确答案,而@manouti的答案(已接受)是针对具体案例的正确答案 如果由于传递给方法的参数无效而有可能在程序执行过程中访问某段代码,那么
IllegalArgumentException
是要抛出的正确异常;毕竟,是非法参数导致代码被执行。在提供的示例中,如果我传递了0
作为第二个参数,我将抛出异常
我的个人使用案例是MessageDigest
算法。由于已经提供了一组已知的算法,我可以随意按名称直接引用其中任何一个,而不必担心潜在的NoSuchAlgorithmException
。我可以吞下异常,将其包装在非法状态异常中如果我的代码在非标准实现上运行,或者如果环境出现严重问题,代码>允许我将其传递到链上;但是,更重要的是,我知道我的程序失败的原因
简而言之:如果您的代码可以通过提供无效参数而意外访问,请使用InvalidArgumentException
。如果您的代码无法正常访问并且只能通过JVM的侥幸行为访问,请使用IllegalStateException
您可以创建自定义异常:“此代码是为理解要抛出的异常而定制的。”您实际上是在抛出一个不是异常的错误。IllegalStateException?在这种特定情况下,我同意您的看法;有一个参数可以传递给构造函数,它将触发抛出的错误(即,num2<1
。但是,如果已经对其进行了检查,或者为了达到这段代码,必须违反语言结构,IllegalStateException
更合适。
throw new Exception("Error");