REST API呼び出しを処理するこの関数では、要求の一部を処理する呼び出された関数のいずれかが、エラーコードを応答として送信する必要があることを通知するエラーをスローする可能性があります。しかし、関数自体もエラーを発見する可能性があり、その時点で例外処理ブロックにジャンプする必要があります。 Webstormは、次のメッセージでthrow
を強調します"ローカルで捕捉された例外の"スロー "を修正するには?
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);
}
}
:'throw' of exception caught locally. This inspection reports any instances of JavaScript throw statements whose exceptions are always caught by containing try statements. Using throw statements as a "goto" to change the local flow of control is likely to be confusing.
しかし、私は状況を改善するためのコードをリファクタリングするかどうかはわかりません。
私はif
チェックにcatch
ブロックからコードをコピー - ペーストができ、私はこれは私のコードが読みにくく、維持が困難になるだろうと信じています。
isAllowed
チェックを行い、成功しない場合は例外をスローする新しい機能を書くことができますが、Webstormが報告している設計上の問題を修正するのではなく、問題を回避しているようです。
私たちは悪い方法で例外を使用しているので、この問題が発生しているのですか、Webstormのエラーが間違っていて無効にする必要がありますか?
"状況を処理する方法がわからない場合、つまり例外的な状況では、外部発信者に例外を送信する必要があります。それが本当であれば、それは問題を説明します。ただし、これは、この機能だけでなく、プロジェクト全体で例外を使用していることを意味します。他の答えはないので、私はこれを受け入れます。 – cib