我在我的catch语句中用红色下划线,不确定我得到的错误是什么'永远不会在相应的try语句中抛出'是什么意思?一切看起来都很好。
public void validateTriangle(int sidea, int sideb, int sidec) throws InvalidValueException {
try {
if ((sidea + sideb > sidec) || (sideb + sidec > sidea) || (sidea + sidec > sideb)) {
findArea(side1, side2, side3);
}
} catch (InvalidValueException excep) {
message = excep.getMessage();
}
}
答案 0 :(得分:6)
“从不在相应的try语句的主体中抛出”的意思正是它所说的:你已经告诉代码捕获InvalidValueException
,但它并没有被任何代码抛出try
块。显然findArea
没有抛出异常(显然你的内联代码没有)。
try/catch
block用于捕获try
块中发生的异常并处理它们(在相应的catch
块中),因此catch
中没有任何意义对于try
中永远不会发生的异常。 IDE(我相信java
编译器工具的lint功能)将为您标记,因为捕获不会发生的错误可能是一个逻辑错误。
答案 1 :(得分:1)
在try块内运行的代码永远不会抛出InvalidValueException
。这就是他告诉你的。
不需要catch块
答案 2 :(得分:0)
你得到这个红线/编译时错误作为你的方法
throws InvalidValueException
这意味着您的方法无法处理此异常&它将被传递给调用方法。所以在这种情况下,catch块永远不会被执行。
答案 3 :(得分:0)
明确检查findArea
throws InvalidValueException
... findArea(...) throws InvalidValueException {
...
}
答案 4 :(得分:0)
表示This exception is never thrown from the try
请删除try-catch block
答案 5 :(得分:-2)
您的try-catch
会覆盖您的throws InvalidValueException
您应该删除try-catch
,或删除throws InvalidValueException
。