我的 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();
}
}
最佳答案
“从不在相应的 try 语句的主体中抛出” 的意思正是它所说的:您已经告诉代码捕获 InvalidValueException
,但它不会被抛出try
block 中的任何代码。显然 findArea
不会抛出该异常(显然您的内联代码也不会抛出该异常)。
一个try/catch
block用于捕获 try
block 中发生的异常并处理它们(在相应的 catch
block 中),因此 catch
没有任何意义对于 try
中从未发生的异常。 IDE(我相信 java
编译器工具的 lint 功能)将为您标记这一点,因为捕获不会发生的错误可能是逻辑错误。
关于java - try catch 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12839344/