捉住可抛物的做法不好吗?[重复]

问题描述 投票:-2回答:1

例如我的代码是这样的,但在声纳中却显示为bug.我们如何解决这个问题?

编码

try {
            return restTemplate.getForObject(urlSearchID, AccessIDSearchResponse.class);

        } catch (HttpServerErrorException hse) {
            AccesIdExceptionUtility.recoverFromHttpServerExc(hse);
        } catch (HttpClientErrorException hce) {
            AccesIdExceptionUtility.recoverFromHttpClientExc(hce);
        } catch (ClientException ce) {
            AccesIdExceptionUtility.recoverFromClientExc(ce);
        } catch (Exception e) {
            AccesIdExceptionUtility.recoverFromException(e);
        }
        catch (Throwable ex) {
            throw new ServiceException(ErrorMessages.EPO_SYSTEM_ERROR, ex.getMessage(), agentSearchUrl);
        }
        return null;
java sonarlint
1个回答
0
投票

是的,作为一般规则,这是一个坏主意。

你正在捕捉 错误 以及异常。 你几乎可以肯定你没有正确地处理它们。 例如,你错误地处理了 线程死亡 根据我对文档的阅读。 而你的机会做什么有用的 虛擬機器錯誤 是微乎其微的。

因为恢复的可能性不大,这样做的效果是你会混淆原来的问题,让你的调试生活变得更加困难。


0
投票

是的,这是一种不好的做法。在Java中,Throwable是Error和Exception的基类。你已经对Exceptions很熟悉了,它们可以被选中或不被选中,所以你可以捕捉它们并进行处理、记录或重投。

Error比较复杂,它们是JVM的error,比如OutOfMemoryException,这是一个VirtualMachineError。你要如何在你的代码中处理这个问题?答案是:你根本无法处理。

如果你在google上搜索 "可恢复和不可恢复的情况 "Exceptions是可恢复的情况,因为你可以处理NullPointerException,而不可恢复的情况是Errors。

如果你想查看Baeldung,这是一个关于Java,Spring等的很好的博客。https:/www.baeldung.comjava-catch-throwable-bad-practice

© www.soinside.com 2019 - 2024. All rights reserved.