【问题标题】:Using exception or using multiple try catch java [closed]使用异常或使用多个try catch java [关闭]
【发布时间】:2019-02-19 04:56:01
【问题描述】:

我只是在写一个代码,想知道使用异常类捕获异常好还是使用多种类型的try-catch好。

try{
    // some error-prone code
   }catch(Exception e){
   }

或者,

try{
    // some error-prone code
   }catch(NullPointerException n){
   }catch(ArrayOutOfBoundException a){
   } ..... etc

【问题讨论】:

标签: java exception using


【解决方案1】:

这取决于您将如何处理异常。如果您对每个异常都有特定的事情要做,那么您可以使用多个 try catch。如果没有,您可以只使用通用异常。此外,如果您知道您的代码可能会更好地抛出哪种异常,只需使用该特定异常即可。

【讨论】:

  • 使用通用异常处理是个好习惯吗?
  • @Ankush 你的问题的答案取决于你问的人。对我来说,这是一种不好的做法,因为它会妨碍您的代码可读性。可能在您的代码上工作的其他开发人员会发现很难判断您正在捕获什么异常。因此,如果您知道要捕获哪些异常,我个人认为最好明确指定它们而不是使用通用异常。
【解决方案2】:

您应该只捕获您知道如何正确处理的异常;示例包括IOException,您可以在其中执行重试操作、返回一些默认值或重新抛出错误等操作;和NumberFormatException,您尝试将用户输入读取为数字并发现它是垃圾,因此您可以要求用户再试一次。

在几乎所有情况下,您实际上并不知道对“任何错误”的正确响应是什么,并且在许多情况下(例如,大多数未经检查的异常),您唯一要做的就是通过捕获 @987654323 @ 掩盖了一些需要解决的潜在问题。通常,对于通用未知异常,唯一可接受的响应是“写入日志消息并中止当前操作”,适用于“当前操作”的任何定义(可能包括回滚事务和返回 HTTP 503 状态等内容)代码)。

在实际应用程序中,这个最后的catch Exception 由框架代码(例如 Spring 或 Jersey)处理并执行这些广泛的清理操作。如果你的代码不能做任何事情更好(这通常需要知道发生了什么具体,而不仅仅是“异常”),那么它应该让异常传播并使用标准错误处理程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 2013-09-30
    • 2020-04-02
    相关资源
    最近更新 更多