【问题标题】:Return based on instanceof of exceptions基于异常的instanceof返回
【发布时间】:2018-09-19 21:56:06
【问题描述】:

我的任务是返回基于布尔值的异常实例

如果异常是 ConnectTimeoutException 的实例,则返回 true,或者如果异常实例是 SocketTimeoutException,则返回 true。

我已经编写了代码,这是正确的方法吗?

(注意:我必须在 return 语句中检查这一点,而不是在 if 语句中。)

代码:

public boolean canRetry(RetryContext context) {

        Throwable exception = context.getLastThrowable();
        ......
        ......
        ......
        ......
        ......
        // Some Code
        return (exception instanceof ConnectTimeoutException || exception instanceof SocketTimeoutException);


    }

【问题讨论】:

  • 不知何故这没有意义。在任何情况下你都会返回“它的实例”,那么为什么不只是return exception;?你想达到/解决什么?为什么不能使用if?完全不清楚。
  • 它将返回boolean
  • 为什么要玩实例,为什么不简单的 throw e 呢?并检查例如上层或只是抓住它并做任何你想做的事?
  • return (exception instanceof ConnectTimeoutException || exception instanceof SocketTimeoutException); 在这种情况下对我来说看起来不错。
  • @lexicore 感谢您的确认。

标签: java exception return


【解决方案1】:

如果exception 是任一类的实例,您当前完成的方式将返回布尔值 true,否则将返回布尔值 false。你正在寻找这样的东西:

if(exception instanceof ConnectTimeoutException || exception instanceof SocketTimeoutException){
    return exception;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-09
    • 2013-06-22
    • 2020-01-31
    • 2010-10-05
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 2015-05-05
    相关资源
    最近更新 更多