我有以下代码示例:

 private boolean openThroughCommPort(IProgressMonitor monitor, int portNum)
       throws InterruptedException, PortInUseException, IOException,
       UnsupportedCommOperationException, TooManyListenersException,
       UnsupportedVehicleException, InnerCanceledException {
        ...
       }


我不确定这是个好方法-在方法签名中引发许多异常。

也许您可以告诉我这种情况的最佳实践?

最佳答案

首先,如果一个方法抛出那么多异常,则意味着该方法正在做太多事情。您应该考虑将工作分配给单独的方法。

其次,如果对调用者(调用者处于同一抽象级别)知道发生了确切的异常并对其采取特定操作很重要,则抛出单个异常而不包装异常更为有意义。 @Jon Skeet提出的观点是对的,这也将减少有效文档编制的可能性。

如果调用方不需要知道确切的原因,则抽象级别不同,则可以将异常包装在与调用方的抽象级别内联的您自己的自定义异常中。

08-05 03:13
查看更多