javascript編程異常處理實(shí)例小結(jié)
本文實(shí)例總結(jié)了javascript編程異常處理的方法。分享給大家供大家參考,具體如下:
前言:在前一篇《asp.net開發(fā)中常見公共捕獲異常方式總結(jié)》,我們整理總結(jié)了asp.net服務(wù)端的異常處理。這一篇接著前文,簡(jiǎn)單總結(jié)并討論一下javascript在客戶端的異常處理。這樣asp.net的服務(wù)端和客戶端異常處理我們就都有了初步的認(rèn)識(shí)。
1、煩人的腳本錯(cuò)誤
樓豬經(jīng)常裝13,但是普遍都沒有深度。偶然艱難地看懂了一段英文,終于可以深沉地再裝一回:
When browsing Web pages on the internet, we all have seen a JavaScript alert box telling us there is a runtime error and asking "Do you wish to debug?". Error message like this may be useful for developers but not for users. When users see errors, they often leave the Web page.
上面這段話,哼哼,看不懂了吧?nc樓豬優(yōu)雅且粗暴地理解一下就是,打開一個(gè)網(wǎng)頁(yè),我們都不時(shí)碰到過網(wǎng)頁(yè)彈出腳步錯(cuò)誤并詢問“是否要調(diào)試?”這種sb問題。煩不煩啊,正常用戶經(jīng)常都會(huì)習(xí)慣性選擇右上紅叉,但是這種提示信息可能對(duì)開發(fā)人員就tmd很有用。由此可見,我kao,開發(fā)人員不正常?!看來樓豬理解有誤。其實(shí)您不難看出,原文要告訴我們的最終意圖應(yīng)該是,網(wǎng)頁(yè)里出現(xiàn)腳本錯(cuò)誤很要命,用戶體驗(yàn)不好,白白“嚇跑”一批潛在用戶。
2、如何處理腳本錯(cuò)誤
在js中,我們通常也是通過try...catch 來捕獲并處理異常。
try { //Run some code here } catch(e) { //Handle errors here }
在實(shí)際代碼中,我們可能會(huì)這么寫:
function test(){ var txt=""; try{ alert(aaa);//aaa是未聲明的變量 } catch(e){ txt="There was an error on this page.\n\n"; txt+="Error message: " + e.message + "\n\n"; txt+="Error description: " + e.description + "\n\n"; txt+="Error name: " + e.name + "\n\n"; //alert(txt);//正式平臺(tái)上可能需要注釋掉該行 } }
還有一種比較通用的做法就是,給window對(duì)象的onerror事件注冊(cè)通用處理方法,并將下面的代碼置于頁(yè)面的<head></head>節(jié)內(nèi):
window.onerror=function(){ return true; }
上面這種方式的好處是頁(yè)面里寫一次,就不會(huì)彈出惱人的腳本錯(cuò)誤,有點(diǎn)全局處理的意思。對(duì)于開發(fā)人員,這種寫法可能會(huì)隱藏潛在的腳本錯(cuò)誤而不被發(fā)現(xiàn),所以測(cè)試的時(shí)候需要注釋掉上面的函數(shù)。
3、javascript里的Error
(1)、Error對(duì)象的常用屬性
在我們捕獲異常的時(shí)候,通常都會(huì)在catch處拋出一個(gè)Error對(duì)象的實(shí)例e,e的幾個(gè)常用屬性如下:
屬性 說明
description 異常的描述信息
message 異常的描述信息
name 異常類型
number 獨(dú)有的異常代號(hào)
在實(shí)際開發(fā)中,通常都會(huì)提示給開發(fā)人員message和name信息,以便有針對(duì)性地處理異常。
(2)、Error對(duì)象的類型
通過(1)中的name屬性我們可以查看到異常類型。在js中,有如下幾種常見異常類型:
TypeError : 當(dāng)遇到一個(gè)意外的類型時(shí)引發(fā),比如未聲明的變量等;
SyntaxError : 在解析js代碼時(shí)其中的語法錯(cuò)誤引發(fā),比如服務(wù)端注冊(cè)腳步,少一個(gè)括號(hào)或引號(hào)等;
ReferenceError : 使用一個(gè)無效的引用時(shí)引發(fā)該異常;
EvalError : 在錯(cuò)誤的調(diào)用eval函數(shù)時(shí)引發(fā);
RangeError : 在一個(gè)數(shù)字型變量的值超出了其范圍時(shí)引發(fā);
URIError : 錯(cuò)誤地使用encodeURI()或decodeURI()函數(shù)時(shí)引發(fā)。
在實(shí)際的開發(fā)中,針對(duì)不同類型的異常作出不同的異常處理,有利于我們有效地發(fā)現(xiàn)問題和提高用戶體驗(yàn)。
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
利用uni-app開發(fā)App的超簡(jiǎn)易教程
uni-app是一個(gè)使用Vue.js開發(fā)所有前端應(yīng)用的框架,開發(fā)者編寫一套代碼,可發(fā)布到iOS、Android、Web(響應(yīng)式)、以及各種小程序,下面這篇文章主要給大家介紹了關(guān)于如何利用uni-app開發(fā)App的相關(guān)資料,需要的朋友可以參考下2022-11-11js表數(shù)據(jù)排序 sort table data
對(duì)于表格的排序,是很不錯(cuò)的一個(gè)功能,方便用戶快速的分析一些數(shù)據(jù)。2009-02-02微信小程序?qū)崿F(xiàn)頁(yè)面導(dǎo)航的方法詳解
這篇文章主要為大家詳細(xì)介紹一下微信小程序?qū)崿F(xiàn)頁(yè)面導(dǎo)航的幾種方法以及幫助大家掌握如何使用頁(yè)面之間的導(dǎo)航跳轉(zhuǎn),感興趣的可以了解一下2022-07-07第七篇Bootstrap表單布局實(shí)例代碼詳解(三種表單布局)
Bootstrap提供了三種表單布局:垂直表單,內(nèi)聯(lián)表單和水平表單。接下來通過本文給大家介紹Bootstrap表單布局實(shí)例代碼詳解,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-06-06JavaScript數(shù)組常用方法實(shí)例講解總結(jié)
這篇文章主要介紹了JavaScript數(shù)組及常見方法,結(jié)合實(shí)例形式總結(jié)分析了JavaScript數(shù)組的基本獲取、添加、刪除、排序、翻轉(zhuǎn)等相關(guān)操作技巧,需要的朋友可以參考下2021-09-09JS插入排序簡(jiǎn)單理解與實(shí)現(xiàn)方法分析
這篇文章主要介紹了JS插入排序簡(jiǎn)單理解與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了JavaScript插入排序基本原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-11-11js面向?qū)ο蠓庋b級(jí)聯(lián)下拉菜單列表的實(shí)現(xiàn)步驟
這篇文章主要介紹了js面向?qū)ο蠓庋b級(jí)聯(lián)下拉菜單列表的實(shí)現(xiàn)步驟,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下2021-02-02