抛出catch块是不是很好的编码实践?

问题描述 投票:-4回答:3

我正在做一些与服务有关的操作。以下代码段是否有效?

try {
          //some code here
    } catch (ServiceException e) {
                throw new ServiceException("Error!!!");
   }

我正在捕获ServiceException并抛出相同的异常。好的做法???

java try-catch
3个回答
0
投票

在catch部分,你实际上捕获了代码期间发生的主要异常。然后你从那里抛出自定义/用户可读异常......这是一个好习惯。


0
投票

不好的做法。因为很难找到问题的根本原因


0
投票

你不确定你写的是好还是坏。在这种情况下,我会记录一下我计划使用的工具,在这种情况下是Java的异常机制,然后我会开始提问:

  1. 是否有理由为什么我应该捕获ServiceException e然后抛出另一个具有较少信息的相同类型。您使用较少的信息创建了新的。字符串“错误!!!”肯定比原来的e.getMessage()或e.getCause等可能得到的少(假设ServiceException e可能包含另一个低级异常,请记录一下有关异常包装的内容)。
  2. 一些调用代码会捕获一个ServiceException并对其进行操作吗?检查一下您的调用层次结构,找到您必须对ServiceException采取行动的位置。停在那里然后再开始问。如果在这里我捕获一个带有“错误!!!”的ServiceException,它会有什么不同吗?在它或原始的ServiceException e。
  3. 我在我的代码中抛出并捕获异常,我是否必须以某种方式跟踪以后发生的事情?如果是,那么我还会记录一些关于发生的事情的错误,警告或信息,具体取决于方案。这样,对于稍后检查应用程序日志的人员,您将更容易进行故障排除过程。我还会读一些关于吞咽异常以及为什么这样做不好的原因。
© www.soinside.com 2019 - 2024. All rights reserved.