如何在 JavaScript 中捕獲語法錯誤?


在本教程中,我們將學習如何在 JavaScript 中捕獲語法錯誤。

在 JavaScript 中,如果我們在程式碼中犯任何錯誤,就會出現錯誤。例如,ReferenceError,即當我們呼叫程式碼中不存在的變數時。

TypeError,即當我們嘗試更改不可變的值或嘗試以不合適的方式使用變數時。

SyntaxError,即當我們嘗試解釋無效程式碼時。我們將在下面詳細瞭解此錯誤。

什麼是語法錯誤?

當我們的程式碼中存在故障時,會丟擲語法錯誤。此錯誤發生在嘗試解釋語義上無效的程式碼時。如果我們建立編譯器無法解釋的無效程式碼。

語法錯誤的原因

它是由程式碼中不正確的預定義語法引起的。例如,

  • 缺少開始或結束括號、方括號或花括號。

  • 拼寫錯誤的關鍵字,例如變數名或函式名。

這些錯誤在解析或解釋程式碼時檢測到。這些錯誤將顯示在瀏覽器開發工具(如 Chrome Devtools)的控制檯中。JS 錯誤堆疊樹將幫助我們找到錯誤,其中包含錯誤程式碼行的描述以及錯誤說明。

示例

讓我們看一個例子

<!DOCTYPE html>
<html>
<body>
   <h1>Displaying syntaxError</h1>
   <p id="result">
   </p>
   <script>
      var message = "Hello world!";
      document.getElementById("result).innerHTML = message;
   </script>
</body>
</html>

在這裡,我們可以看到我們錯過了“result”後面的雙引號的關閉。這導致了 SyntaxError。瀏覽器開發工具(如控制檯)將顯示“Uncaught SyntaxError: Invalid or unexpected token”

處理 SyntaxError

由於 SyntaxError 在程式碼被解析時丟擲,因此無法使用 try-catch 塊在 js 中處理它們。要處理 SyntaxError,我們可以使用 window.onerror() 函式。

當我們的程式碼中出現未捕獲的異常或編譯錯誤時,將呼叫 window.onerror(),並提供有關錯誤的一些方法資訊,從而為錯誤處理提供了更強大的機會。

何時使用 window.onerror()

通常,當我們在程式碼中遇到任何錯誤時,都會在瀏覽器控制檯中檢查丟擲的錯誤。當開發包含大量 JS 程式碼的複雜 Web 應用程式時,這可能會給開發人員帶來麻煩。為了以實用的方式解決此問題,window.onerror 將允許我們以方便的方式報告/檢查錯誤。

此函式接受的引數為

  • message - 錯誤訊息,即 DOMString

  • url - 包含錯誤檔案的 URL,即 DOMString

  • linenumber - 發生錯誤的行號,即長整型

要使用此函式,我們需要在單獨的標籤中定義 onerror 函式,而不是在錯誤發生的位置。

示例

讓我們看一個例子

<!DOCTYPE html>
<html>
<body>
   <h2>Displying syntaxError using onerror()</h2>
   <p id="result">
   </p>
   <script>
      window.onerror = function(message, url, linenumber) {
         document.getElementById('result').innerHTML = 'Error - ' + message + 'on line ' + linenumber + ' for ' + url;
      }
   </script>
   <script>
      var message = "Hello World!;
   </script>
</body>
</html>

這裡,我在輸出中刪除了 URL。在第 13 行,我們錯過了關閉雙引號。我們也可以將此函式與錯誤訊息引數一起使用。例如,

示例

<!DOCTYPE html>
<html>
<body>
   <h2>Displaying syntaxError using onerror()</h2>
   <p id="result"></p>
   <script>
      window.onerror = function(e) {
         document.getElementById('result').innerHTML = "Error is - " + e;
      };
   </script>
   <script>
      var message = "Hello World!;
   </script>
</body>
</html>

請注意,onerror() 函式應該寫在單獨的指令碼標籤中。在這裡,無需使用控制檯,我們就可以注意到程式碼失敗的原因。這有助於向程式設計師傳達程式碼中存在應修復的語法錯誤。透過檢查程式碼中的所有表示式在語義上是否正確,可以最大程度地減少此錯誤。

希望本教程能讓你瞭解 SyntaxError 以及如何處理 SyntaxError。

更新於:2022 年 12 月 8 日

1K+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.