JavaScript >> Javascript 文檔 >  >> JavaScript

在 setTimeout 和 setInterval 中捕獲異常

錯誤和異常在所有編程語言中都很常見。在 JavaScript 中,我們使用 try...catch 用於捕獲意外錯誤和異常的語句。

try...catch怎麼做 工作嗎?

try {
    // block of code
} catch (error) {
    // handle the error
} finally {
    // execute in all cases
}
  • try 子句首先執行。
  • 如果沒有拋出異常,catch 子句被忽略並執行 try 聲明完成。
  • 如果在try執行過程中引發異常 子句,則該子句的其餘部分將被忽略。 catch 子句被執行,然後是 try 之後的內容 語句被執行。
  • finally 子句是可選的,在兩個子句之後執行,無論是否引發異常。

setTimeout中的異常處理 和 setInterval

setTimeoutsetInterval 函數在指定的毫秒數後調用或計算表達式。如果我們把這些方法放在 try 子句並引發異常,catch 子句不會捕獲其中任何一個:

try {
    setTimeout(() => {
        throw new Error(`An exception is thrown`);
    }, 500);
} catch (error) {
    console.error({ error });
}

這是因為 try...catch 語句是同步工作的,相關函數在一定時間後異步執行。

為了解決這個問題,我們必須把 try...catch 函數內部的塊:

setTimeout(() => {
    try {
        throw new Error(`An exception is thrown`);
    } catch (error) {
        console.error({ error });
    }
}, 500);


Tutorial JavaScript 教程
  1. 自定義波紋效果(我想在我的內聯樣式中使用 var)

  2. 如何獲取數組的空元素的索引?

  3. 將 Ionic React 添加到現有的 React 項目

  4. #CienDiasConCourseIt:飛行員

  5. 像專業人士一樣學習 React-router 😎

  6. React Hooks:使函數組件有狀態

  7. JavaScript 101:分解函數

  1. 您應該在一處配置環境變量

  2. 7.4.0 發布:core-js 3、靜態私有方法和部分應用

  3. Google Firebase 功能:設置和訪問環境變量

  4. 使用 Angular NgModules 實現可重用代碼等

  5. ⚡️ 如何在 React 中調用基於 OAuth 的 API?

  6. function.call 和 function.apply 有什麼區別?

  7. 谷歌地圖顯示:沒問題

  1. AWS Amplify 訂閱使用 / 2. 多房間聊天

  2. 懶一點

  3. 全棧項目的 My Express 應用程序文件夾結構和設置

  4. 使用 HTML、CSS、JavaScript 和 Node.js 構建星球大戰簡介!