【问题标题】:is it good practice to call a method from Exception block in java?从java中的异常块调用方法是一种好习惯吗?
【发布时间】:2016-06-24 07:20:52
【问题描述】:

从java中的异常块调用方法是个好习惯吗?

catch (Exception exception) {
   cleanup();
}

【问题讨论】:

  • 这与好/坏做法无关。您是否在 catch 子句之外的任何地方调用cleanup(),如果是这样,那么当您可以调用函数时为什么要重复代码。如果不是,那么只需将代码从 cleanup() 复制到 catch 子句,或者它真的没关系。
  • 通常cleanUp 任务非常适合finally block 而不是catch block
  • 这取决于你的方法和你的设计。我总是会小心改变某些内部或全局状态的方法。如果您使用这种不一致的方法,您可能会遇到一些奇怪的行为。
  • 既然您达到了那个水平,我应该在答案中添加什么以使其也值得投票吗?

标签: java exception-handling


【解决方案1】:

这是不好的做法,原因有两个:

  1. 通常情况下,cleanup 类型的操作...也应该在您的代码没有失败时执行;正确的?但是如果你只把它放到 catch 中......当没有抛出异常时不会调用清理!
  2. 除此之外:对于不是异常的 Throwable 子类,上述内容将调用 cleanup()。

所以,做这些事情的唯一方法是使用 finally 块来调用方法......应该总是被调用。或者,根据手头的实际问题,您可能需要考虑使用 try-with-resources 和 AutoCloseable 接口。

【讨论】:

    猜你喜欢
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 2017-06-14
    相关资源
    最近更新 更多