'抛出'在本地捕获的异常为什么这么糟糕?

时间:2014-06-26 15:00:31

标签: javascript webstorm

我有一段看起来像这样的代码:

try {
  if( !request.body || !request.body.device ) {
    throw new FooError( "missing 'device'" );
  }
  if( !request.body.device.type ) {
    throw new BarError( "missing 'device.type'" );
  }
  if( request.body.device.type != "ios" ) {
    throw new BazError( "unexpected 'device.type'" );
  }
} catch( error ) {
  // handle error and communicate message to the user
}

WebStorm重点介绍了3个throw术语,并给出了以下解释:

  

'抛出'在本地捕获的异常

     

此检查会报告JavaScript throw 语句的所有实例,这些语句的异常始终通过包含 try 语句来捕获。使用 throw 语句作为" goto"改变当地的控制流程可能会令人困惑。

我不理解这种推理。为什么这可能会让人感到困惑?什么是不那么混乱的选择?

0 个答案:

没有答案