ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript で Try...Catch を Async/Await で正しく使用する方法は?

JavaScript で Try...Catch を Async/Await で正しく使用する方法は?

DDD
リリース: 2024-12-29 04:37:10
オリジナル
416 人が閲覧しました

How to Correctly Use Try...Catch with Async/Await in JavaScript?

Async/Await を使用した正しい Try...Catch 構文

JavaScript の Async/Await 機能では、try の外で式を待つ変数を宣言するのが一般的です...catch ブロックを使用して、後でアクセスできるようにします。ただし、例外を効果的に処理するには、try 本体内のビジネス ロジックを最小限に抑えることがベスト プラクティスです。

ベスト プラクティス

try {
  const createdUser = await this.User.create(userInfo);

  console.log(createdUser);
  // Business logic goes here
} catch (error) {
  console.error(error); // from creation or business logic
}
ログイン後にコピー

このアプローチにより、ビジネス ロジックからの例外を含むすべての例外が確実に処理されます。

Promise エラーを処理するための代替オプション

エラーのみをキャッチしたい場合Promise から、次のオプションを検討してください:

1.変数を外部で宣言し、エラーを処理する

ブロックの外で変数を宣言し、分岐を通じてエラーを処理します:

let createdUser;
try {
  createdUser = await this.User.create(userInfo);
} catch (error) {
  console.error(error); // from creation
}
if (createdUser) {
  // User was created successfully
  console.log(createdUser);
  // Business logic goes here
}
ログイン後にコピー

2.キャッチされた例外のタイプをテストします

キャッチされた例外のタイプを確認し、それに応じて処理します:

try {
  const createdUser = await this.User.create(userInfo);
  // User was successfully created
  console.log(createdUser);
  // Business logic goes here
} catch (error) {
  if (error instanceof CreationError) {
    console.error(error); // from creation
  } else {
    throw error;
  }
}
ログイン後にコピー

3. .then() コールバックを利用する

シンプルさと正確性を提供する try...catch の代替方法は、.then() コールバックを使用することです。

await this.User.create(userInfo).then(
  (createdUser) => {
    // User was created successfully
    console.log(createdUser);
    // Business logic goes here
  },
  (error) => {
    console.error(error); // from creation
  }
);
ログイン後にコピー

各オプションの長所と短所を考慮してください。特定の要件に基づいて。

以上がJavaScript で Try...Catch を Async/Await で正しく使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート