static async handleRequest(req) {
try {
let isAllowed = await checkIfIsAllowed(req);
if (!isAllowed) {
throw new ForbiddenException("You're not allowed to do that.");
}
let result = await doSomething(req); // can also raise exceptions
sendResult(result);
} catch(err) {
sendErrorCode(err);
}
}
Webstorm将使用以下消息下划线标记throw
:本地捕获异常。此检查报告任何JavaScript throw语句的实例,其异常始终被包含在try语句中捕获。使用throw语句作为“goto”来更改局部控制流可能会令人困惑。
但是,我不确定如何重构代码以改善情况。
我可以从catch
块中复制粘贴代码到if
检查中,但我认为这会使我的代码更难阅读和维护。
我可以编写一个新函数,进行isAllowed
检查,并在不成功时引发异常,但这似乎是绕过问题,而不是解决Webstorm据说报告的设计问题。
我们是否以不良方式使用异常,这就是为什么我们遇到了这个问题,还是Webstorm错误只是误导性的,并且应该禁用?
sendErrorCode
- 但它没有逐字重复; 在一个地方,它从这段代码块发送一个非常具体的错误,在更通用的catch
中,它发送一个还没有编码的更一般化的错误...? - James Thorpe