JavaScript的錯誤簡易處理
除錯JavaScript著實是一件令人頭痛的事情,但現在有很多工具讓除錯工作更方便和準確的發現錯誤資訊。好的錯誤處理技術可以讓指令碼的開發、除錯和部署更流暢。曾經,JavaScript總是因為會出現奇怪的令人困惑的錯誤訊息而知名,除錯這種資訊確實是一段難熬的經歷。以下是解決JavaScript錯誤的一些小方法:
try-catch
ECMA-262第3版引入了
try-catch
語句,基本的語法如下所示:try { } catch(error) { }
如果try塊中的任何程式碼發生錯誤,就會立即執行catch塊。此時,catch塊會接收到一個包含錯誤資訊的物件。即使不使用這個錯誤物件,也要起個名字,物件中包含的實際資訊因瀏覽器而異,但共同的是一個儲存錯誤訊息的message屬性,ECMA-262還規定了一個儲存錯誤型別的name屬性,所有瀏覽器都支援這個屬性(Opera 9之前的版本除外)。
finally
雖然在try-catch塊中是可選的,但finally子句一經用,無論如何都會執行,甚至return語句都不會阻止,例如:
function test() { try { return 1; } catch(error) { return 2; } finally { return 3; } }
錯誤型別
每種錯誤都有對應的錯誤型別,而當錯誤發生時,就會丟擲相應型別的錯誤物件,ECMA-262定義了7種錯誤型別:
1)
Error
: 基型別。
2)EvalError
: 使用eval()
函式發生異常時丟擲。
3)RangeError
: 數值超出相應範圍時丟擲。
4)ReferenceError
: 找不到物件時丟擲。
5)SyntaxError
: 使用eval()
函式中的字串有語法錯誤時丟擲。
6)TypeError
: 在變數中儲存意外型別或訪問不存在的方法時丟擲。
7)URIError
: 使用encodeURI
或decodeURI()
中URI格式不正確時丟擲。丟擲錯誤
與try-catch相配的還有一個throw操作符,用於丟擲自定義錯誤。丟擲錯誤時,必須給throw操作符指定一個值,這個值的型別沒有要求,例如:
throw 123; throw "Hello World!";
在遇到throw操作符時,程式碼會立即停止執行。
錯誤事件
沒有通過try-catch處理的錯誤都會觸發
window
物件的error
事件。任何瀏覽器中,onerror
事件處理程式都不會建立event
物件,但它可以接受3個引數:錯誤訊息、錯誤所在的URL和行號。只要發生錯誤,無論是不是瀏覽器生成的,都會觸發error
事件,並執行這個事件處理程式,如果在事件處理程式中返回false
,可以阻止瀏覽器報告錯誤的預設行為,例如:window.onerror = function(message, url, line) { alert(message); return false; }
影像也支援
error
事件,只要影像的src
屬性中的URL不能返回可以被識別的影像格式,就會觸發error
事件。
本文為Anyforweb技術分享部落格,需要了解網站建設相關,請訪問anyforweb.com。
相關文章
- Rust中錯誤處理的最簡單指南Rust
- 錯誤處理
- go的錯誤處理Go
- axios 的錯誤處理iOS
- JavaScript 中遇到的錯誤問題,該怎麼處理?JavaScript
- 簡單介紹Python 處理錯誤的原則Python
- Python錯誤處理Python
- PHP 錯誤處理PHP
- php錯誤處理PHP
- Go 錯誤處理Go
- grpc中的錯誤處理RPC
- 錯誤處理:如何通過 error、deferred、panic 等處理錯誤?Error
- openGauss 處理錯誤表
- Restful API 中的錯誤處理RESTAPI
- 請教 Element 的錯誤處理
- 【譯】RxJava 中的錯誤處理RxJava
- Python錯誤處理和異常處理(二)Python
- 前端的水平線,錯誤處理和除錯前端除錯
- Oracle異常錯誤處理Oracle
- 淺談前端錯誤處理前端
- ORACLE 異常錯誤處理Oracle
- PHP 核心特性 - 錯誤處理PHP
- 15-錯誤處理(Error)Error
- Go語言之錯誤處理Go
- laravel9 錯誤處理Laravel
- 學習Rust 錯誤處理Rust
- 談談RxSwift中的錯誤處理Swift
- 基於 React Redux 的錯誤處理ReactRedux
- Go 的錯誤處理策略 筆記Go筆記
- API的設計(1) - 錯誤處理API
- 應用中的錯誤處理概述
- 使用 clearError 清除已處理的錯誤Error
- Bash 指令碼中的錯誤處理指令碼
- 如何在 Go 中優雅的處理和返回錯誤(1)——函式內部的錯誤處理Go函式
- rust學習十、異常處理(錯誤處理)Rust
- 說說你對異常處理和錯誤處理的理解
- async/await 優雅的錯誤處理方法AI
- node端統一錯誤處理
- node錯誤處理與日誌