我有一段看起来像这样的代码:
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"改变当地的控制流程可能会令人困惑。
我不理解这种推理。为什么这可能会让人感到困惑?什么是不那么混乱的选择?