0

我在我的 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();
    }
}
4

6 回答 6

6

“从不在相应的 try 语句的主体中抛出”的意思正是它所说的:您已经告诉代码捕获一个InvalidValueException,但try块内的任何代码都没有抛出它。显然findArea不会抛出该异常(显然您的内联代码不会)。

try/catch用于捕获块内发生的异常并try处理它们(在相应的catch块中),因此对于catchtry. IDE(我相信编译器工具的 lint 功能java)会在捕获不会发生的错误可能是逻辑错误的基础上为您标记。

于 2012-10-11T12:19:47.187 回答
1

在 try 块中运行的代码永远不会抛出InvalidValueException. 这就是他要告诉你的。

catch 块是不必要的

于 2012-10-11T12:20:03.897 回答
0

你得到这个红线/编译时错误作为你的方法

throws InvalidValueException

这意味着您的方法不会处理此异常,它将被传递给调用者方法。所以在这种情况下,catch 块永远不会被执行。

于 2012-10-11T12:21:22.873 回答
0

findArea明确检查throws InvalidValueException

... findArea(...) throws InvalidValueException {
   ...
}
于 2012-10-11T12:21:57.857 回答
0

方法This exception is never thrown from the try

所以删除你的try-catch block

于 2012-10-11T12:24:11.557 回答
-2

你的try-catch覆盖你的throws InvalidValueException 你应该删除你的try-catch,或者删除你的throws InvalidValueException

于 2012-10-11T12:20:01.667 回答