小编tim*_* p.的帖子

如何在Java中管理复杂的流控制?

我一直在研究Java流量控制和异常处理,并且有这些普遍接受的规则:

  1. 不要将异常处理用于流控制
  2. 避免检查异常,除非客户端希望恢复(这是一种很好的方式,说你强迫客户端处理异常,所以他们不妨尝试从中恢复?)

除了一般规则,我试着遵循:

  1. 如果doSomething()无法"做某事",应该让调用者意识到这一点
  2. 方法应该关注做一件事

在某些情况下,这会造成混乱.我发现我在方法中捕获已检查的异常并在每个地方返回布尔值并不断检查连续的调用,制作如下所示的内容:

if(doA()){
  if(doB()){
    if(doC()){ 
      // only here do I know it's good
    }else{
      // I know C failed
    }
  }else{
    // I know B failed
  }
}else{
  // I know A failed
}
Run Code Online (Sandbox Code Playgroud)

我得到5-6嵌套if-else在某些部分很深,而且非常难看.更不用说管理一堆布尔变量来跟踪哪些有效,哪些无效.

有什么建议?这会是'goto'可以接受的地方吗?

java controls exception-handling flow

3
推荐指数
1
解决办法
1114
查看次数

标签 统计

controls ×1

exception-handling ×1

flow ×1

java ×1