电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

簡介JavaScript錯誤處理機制

瀏覽:109日期:2023-10-19 08:43:58

1、 try-catch語句

ECMA-262第3版引入了try-catch語句,作為JavaScript中處理異常的一種標準方式。

語法:

try{ // 可能會導致錯誤的代碼}catch (error){ // 在錯誤發生時怎么處理}

也就是說,我們應該把所有可能會拋出錯誤的代碼都放在try語句塊中,而把那些用于錯誤處理代碼放在catch塊中。

try-catch語句的邏輯是:如果try塊中的任何代碼發生了錯誤,就會立即退出代碼執行過程,然后接著執行catch塊。此時,catch塊會接收到一個包含錯誤信息的對象。

注意:即使你不想使用這個錯誤對象,也要給它起個名字。

雖然這個對象在不同瀏覽器中可能包含不同信息,但是都有一個保存著錯誤消息的message屬性,還有一個保存錯誤類型的name屬性(并不是所有瀏覽器都有)

try{ }catch (error){ console.log(error.message);}

在跨瀏覽器編程時,最好還是只使用message屬性。

1.1 finally子句

當使用finally子句時,其代碼無論如何都會執行,也就是說,不管是正常執行還是出錯了,finally子句都會執行。甚至return語句,也不會阻止finally子句的執行。看下面的例子:

function test(){try{ console.log(’a’); return 2;}catch(error){ console.log(’b’);}finally{ console.log(’c’);}}console.log(test()); //結果ac2

從運行結果,我們可以看到,return語句并沒有阻止finally子句的執行,而且是在finally子句執行后才會返回return語句的值。

2、錯誤類型

執行代碼期間可能會發生的錯誤有多種類型。每種錯誤都有對應的錯誤類型,而當錯誤發生時,會拋出相應類型的錯誤對象。ECMA-262定義了下列7中錯誤類型:

ErrorEvalErrorRangeErrorReferenceErrorSyntaxErrorTypeErrorURIError

Error是基類型,其他錯誤類型都繼承自該類型。所有錯誤類型共享了一組相同的屬性。

(1)EvalError類型

EvalError類型的錯誤會在使用eval()函數而發生異常時拋出。簡單的說,如果沒有把eval()當成函數調用,就會拋出異常。比如:

new eval() // 拋出EvalErroreval = foo; // 拋出EvalError

注意:在ES5中已經不在出現了。

(2)RangeError類型

RangeError類型的錯誤會在數值超出相應范圍時觸發。主要有幾種情況,一是數組長度為負數,二是Number對象的方法參數超出范圍,以及函數堆棧超過最大值。

var item = new Array(-20); // 拋出RangeError異常

(3)ReferenceError類型

在找不到對象的情況下,會發生ReferenceError。通常,在訪問不存在的變量時,就會發生這種錯誤。

var obj = x; // 在x并未聲明的情況下拋出ReferenceError

(4)SyntaxError類型

SyntaxError是解析代碼時發生的語法錯誤。

var 1a; // 變量名錯誤,拋出SyntaxError

(5)TypeError類型

在變量中保存著意外的類型,或在訪問不存在的方法時,都會導致這種錯誤。

var o = new 10; //拋出TypeError

(6)URIError類型

URIError是URI相關函數的參數不正確時拋出的錯誤,主要涉及encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()這六個函數。

2.2 拋出錯誤

與try-catch語句相配的還有一個throw操作符,用于隨時拋出自定義錯誤。拋出錯誤時,必須要給throw操作符指定一個值,這個值可以是任何類型。

throw 1;throw ’tg’;throw true;throw {name: ’tg’};

2.3 Error對象

所有拋出的錯誤都是Error構造函數的實例。Error構造函數接受一個參數,表示錯誤提示,可以從實例的message屬性讀到這個參數。

在JavaScript中,Error對象的實例必須有message屬性,表示出錯時的提示信息。在大多數JavaScript引擎中,Error實例還可能有name和stack屬性,分別表示錯誤的名稱和錯誤的堆棧。

var err = new Error(’出錯了’);err.message; // '出錯了'

2.4 自定義錯誤

我們還可以創建自定義錯誤消息,最常用的錯誤類型是Error、RangeError、ReferenceError和TypeError。

throw new Error(’報錯了’);throw new RangeError(’數組長度錯誤’);

另外,利用原型鏈還可以通過繼承Error來創建自定義錯誤類型:

function CustomError(message){ this.name = ’CustomError’; this.message = message;}CustomError.prototype = new Error();throw new CustomError(’我的錯誤信息’);

3、錯誤(error)事件

任何沒有通過try-catch處理的錯誤都會觸發window對象的error事件。

onerror事件處理程序不會創建event對象,但它接受三個參數:錯誤消息、錯誤所在的URL和行號。

window.onerror = function(message, url, line){};

當你在事件處理程序中返回false,可以阻止瀏覽器報告錯誤的默認行為

window.onerror = function(message, url, line){ return false;};

4、調試技術

4.1 alert方法

在以前,大多數都是在要調試的代碼中插入alert()函數,看是否執行到這一步來判斷哪里出錯,這種方式比較麻煩,因為alert()會阻止后續代碼的執行(除非你關閉了alert彈窗),而且調試后還要清理。

4.2 console

隨著瀏覽器的不斷改善,現在的瀏覽器都有JavaScript控制臺,我們可以向這些控制臺輸出消息,比如最常用的console對象,它的常用方法如下:

error(message):將錯誤消息記錄到控制臺 info(message):將信息性消息記錄到控制臺 log(message):將一般消息記錄到控制臺 warn(message):將警告消息記錄到控制臺

function test(){ console.log(’結果:’ + (1 + 2));}

4.3 throw

使用throw拋出錯誤。

以上就是簡介JavaScript錯誤處理機制的詳細內容,更多關于JavaScript錯誤處理機制的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 浙江上沪阀门有限公司| 原色会计-合肥注册公司_合肥代理记账公司_营业执照代办 | 隐形纱窗|防护纱窗|金刚网防盗纱窗|韦柏纱窗|上海青木装潢制品有限公司|纱窗国标起草单位 | 横河变送器-横河压力变送器-EJA变送器-EJA压力变送器-「泉蕴仪表」 | RFID电子标签厂家-上海尼太普电子有限公司 | 影视模板素材_原创专业影视实拍视频素材-8k像素素材网 | 防火门|抗爆门|超大门|医疗门|隔声门-上海加汇门业生产厂家 | 深圳市索富通实业有限公司-可燃气体报警器 | 可燃气体探测器 | 气体检测仪 | 食品无尘净化车间,食品罐装净化车间,净化车间配套风淋室-青岛旭恒洁净技术有限公司 | 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 国资灵活用工平台_全国灵活用工平台前十名-灵活用工结算小帮手 | 数码管_LED贴片灯_LED数码管厂家-无锡市冠卓电子科技有限公司 | 脱硝喷枪-氨水喷枪-尿素喷枪-河北思凯淋环保科技有限公司 | 郑州宣传片拍摄-TVC广告片拍摄-微电影短视频制作-河南优柿文化传媒有限公司 | 物流公司电话|附近物流公司电话上门取货 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 咖啡加盟,咖啡店加盟连锁品牌-卡小逗 | 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 | 广东佛电电器有限公司|防雷开关|故障电弧断路器|智能量测断路器 广东西屋电气有限公司-广东西屋电气有限公司 | 顺辉瓷砖-大国品牌-中国顺辉 | 消防设施操作员考试报名时间,报名入口,报考条件 | 常州律师事务所_常州律所_常州律师-江苏乐天律师事务所 | 阜阳成人高考_阜阳成考报名时间_安徽省成人高考网 | 电竞馆加盟,沈阳网吧加盟费用选择嘉棋电竞_售后服务一体化 | 旋转/数显粘度计-运动粘度测定仪-上海平轩科学仪器 | 超声波清洗机_细胞破碎仪_实验室超声仪器_恒温水浴-广东洁盟深那仪器 | 海鲜池-专注海鲜鱼缸、移动海鲜缸、饭店鱼缸设计定做-日晟水族厂家 | 科威信洗净科技,碳氢清洗机,超声波清洗机,真空碳氢清洗机 | 云南标线|昆明划线|道路标线|交通标线-就选云南云路施工公司-云南云路科技有限公司 | 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | 干式变压器厂_干式变压器厂家_scb11/scb13/scb10/scb14/scb18干式变压器生产厂家-山东科锐变压器有限公司 | 清水-铝合金-建筑模板厂家-木模板价格-铝模板生产「五棵松」品牌 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 北京自然绿环境科技发展有限公司专业生产【洗车机_加油站洗车机-全自动洗车机】 | 砖机托板价格|免烧砖托板|空心砖托板厂家_山东宏升砖机托板厂 | VI设计-LOGO设计公司-品牌设计公司-包装设计公司-导视设计-杭州易象设计 | 地埋式垃圾站厂家【佳星环保】小区压缩垃圾中转站转运站 | 复盛空压机配件-空气压缩机-复盛空压机(华北)总代理 |