尝试捕获错误

时间:2012-10-11 12:17:34

标签: java exception try-catch

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

6 个答案:

答案 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