如何在 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 - 發生錯誤的行號,即 long

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

希望本教程能幫助您瞭解 SyntaxError 以及如何處理 SyntaxError。

更新於:2022年12月8日

1K+ 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.