繁体   English   中英

哪种方法更好,为什么?

[英]Which approach is better and why?

假设我有一个嵌套的自定义异常集合,可以从控制器或服务中的任何位置抛出该异常。

那么哪种方法更适合采用呢? 1.使用try catch块捕获这些异常2.使用一种方法来接受包含所有业务模块的闭包。

例如

方法1:

 try{
      //call the business logic here
    }catch(CustomException ex){
      // do something
    }

方法2。

Controller.action{
   // call the business logic here.
}
This method will in turn catch all the exceptions in a try catch
like, this action may look like the following

action(Closure closure){
   try{
}
catch(CustomException e)
  // do handling
}

以上哪个是建筑虎钳,更正确且看起来更干净。

您应该考虑要在何时何地处理异常。 如果可以在此时进行一些操作,请将其括起来(例如记录错误,重试等)。如果没有任何用处,则可以这样做,然后使其冒泡并进行更高级别的处理。 出于这个原因,我更喜欢未检查的异常,因为您可以选择在需要时处理它们,而不会因为尝试捕获块而使代码混乱。

在这种情况下,我倾向于只在控制器中查找异常并做出相应的响应,除非我可以做一些特定的事情来处理异常。

但这确实取决于用例和个人喜好。 考虑何时可能会发生异常以及您想如何以及何时对其进行处理绝对是很重要的,而不是对所有异常都采用全面的方法。

我的个人偏好:

  • 如果系统可以对异常做一些事情(例如重试):approach1
  • 如果系统除了向用户报告外无能为力:我在Controller中使用异常处理方法,例如Grails Goodness示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM