如何在 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。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP