首頁 > web前端 > 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 錯誤的替代選項

如果您只想從承諾,請考慮以下選項:

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板