js错误类型

错误类型

执行代码时可能会发生的错误有很多种。每种错误都有对应的错误类型,ECMA-262定义了7种错误类型:

1.Error

2.EvalError

3.RangeError

4.ReferenceError

5.SyntaxError

6.TypeError

7.URIError

其中,Error是基类型(其他六种类型的父类型),其他类型继承自它。Error类型很少见,一般由浏览器抛出的。这个基类型主要用于开发人员抛出自定义错误。

PS:抛出的意思,就是当前错误无法处理,丢给另外一个人,比如丢给一个错误对象。

new Array(-5); //抛出RangeError(范围)

错误信息为:RangeError: invalid array length(无效的数组的长度)

PS:RangeError错误一般在数值超出相应范围时触发

var box = a; //抛出ReferenceError(引用)

错误信息为:ReferenceError: a is not defined(a是没有定义的)

PS:ReferenceError通常访问不存在的变量产生这种错误

a $ b; //抛出SyntaxError(语法)

错误信息为:SyntaxError: missing ; before statement(失踪;语句之前)

PS:SyntaxError通常是语法错误导致的

new 10; //抛出TypeError(类型 )

错误信息为:TypeError: 10 is not a constructor(10不是一个构造函数)

PS:TypeError通常是类型不匹配导致的

PS:EvalError类型表示全局函数eval()的使用方式与定义的不同时抛出,但实际上并不能产生这个错误,所以实际上碰到的可能性不大。

PS:在使用encodeURI()和decodeURI()时,如果URI格式不正确时,会导致URIError错误。但因为URI的兼容性非常强,导致这种错误几乎见不到。

alert(encodeURI(‘李炎恢‘));

利用不同的错误类型,可以更加恰当的给出错误信息或处理。

try {

new 10;

} catch (e) {

if (e instanceof TypeError) { //如果是类型错误,那就执行这里

alert(‘发生了类型错误,错误信息为:‘ + e.message);

} else {

alert(‘发生了未知错误!‘);

}

}

善用try-catch

在明明知道某个地方会产生错误,可以通过修改代码来解决的地方,是不适合用try-catch的。或者是那种不同浏览器兼容性错误导致错误的也不太适合,因为可以通过判断浏览器或者判断这款浏览器是否存在此属性和方法来解决。

try {

var box = document.getElementbyid(‘box‘); //单词大小写错误,导致类型错误

} catch (e) { //这种情况没必要try-catch

alert(e);

}

try {

alert(innerWidth); //W3C支持,IE报错

} catch (e) {

alert(document.documentElement.clientWidth); //兼容IE

}

PS:常规错误和这种浏览器兼容错误,我们都不建议使用try-catch。因为常规错误可以修改代码即可解决,浏览器兼容错误,可以通过普通if判断即可。并且try-catch比一般语句消耗资源更多,负担更大。所以,在万不得已,无法修改代码,不能通过普通判断的情况下才去使用try-catch,比如后面的Ajax技术。

抛出错误

使用catch来处理错误信息,如果处理不了,我们就把它抛出丢掉。抛出错误,其实就是在浏览器显示一个错误信息,只不过,错误信息可以自定义,更加精确和具体。

try {

new 10;

} catch (e) {

if (e instanceof TypeError) {

throw new TypeError(‘实例化的类型导致错误!‘); //直接中文解释错误信息

} else {

throw new Error(‘抛出未知错误!‘);

}

}

PS:IE浏览器只支持Error抛出的错误,其他错误类型不支持。

时间: 2024-10-22 13:29:22

js错误类型的相关文章

JS错误类型的学习

(1)SyntaxError SyntaxError是解析代码时发生的语法错误 // 变量名错误  var 1a;  // 缺少括号  console.log 'hello'); ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)ReferenceError ReferenceError是引用一个不存在的变量时发生的错误. unknownVariable  // ReferenceError: unknownVariable is not defined ??另一种触发场景是,将一个

搭建前端监控系统(二)JS错误日志收集篇

===================代码展示================    监控系统地址: Demo地址                          页面探针代码: GitHub地址             分析后台地址: GitHub地址                        展示平台地址: GitHub地址                        ===================代码展示================ 对于前端应用来说,Js错误的发生直接

js的错误类型

我在使用node的断言模块(assert)时,会使用错误类型,所以就复习一下: EvalError: 错误发生在eval()中SyntaxError: 语法错误,因为发生SyntaxError会无法通过解释器RangeError: 数值超出范围ReferenceError: 引用不可用TypeError: 变量类型不是预期的URIError: 错误发生在encodeURI()或decodeURI()中 这些错误类型,都是构造函数,js都在内部实现了! 例如: 你可以这样抛出一个语法类型的错误:

【repost】js 常见错误类型

1)SyntaxError SyntaxError是解析代码时发生的语法错误 // 变量名错误  var 1a;  // 缺少括号  console.log 'hello'); (2)ReferenceError ReferenceError是引用一个不存在的变量时发生的错误. unknownVariable  // ReferenceError: unknownVariable is not defined 另一种触发场景是,将一个值分配给无法分配的对象,比如对函数的运行结果或者this赋值.

js常见错误类型

常见三种错误类型: 类型转换错误 数据类型错误 通信错误 数据类型错误实例: 通讯错误: 通讯错误最常见的问题是将数据发给服务器之前没有使用 encodeURIComponent() 对数据进行编码

从 Node.js 错误中获得的经验

有多少次你发现自己在终端或监控系统内查看堆栈轨迹,但并不能看出个所以然来?如果你的回答是“很多次”,那么这篇帖子你应该看看.如果你不经常碰上这种情况也没关系,你也可以看看这篇文章解闷. 当处理 Node.js 服务器的复杂数据时,要会从可返回给请求方的错误中总结经验,具备此能力至关重要.在处理一个请求时,一个错误出现会引起链接里另一个错误的出现,于是问题就来了.当此脚本出现时,一旦你生成了新错误,并将它返回到了链接,那你就丢失了与原始错误的所有连接.    达尔文达尔文翻译于 5天前 0人顶 顶

怪异JS错误的诊断与修复

h2{font-size:1.2em}p{text-indent:2em;}前端开发whqet,csdn,王海庆,whqet,前端开发专家 原文:JavaScript Errors and How to Fix Them 翻译:前端开发whqet, 意译为主,不当之处敬请指正. 作者简介:Jani Hartikainen,拥有十数年的网页应用开发经验,曾经为nokia和低调神秘的startups.(一个创业孵化公司)除了编程和玩游戏,他经常在自己的站点书写JS和高质量的代码. 译者的话,Java

js错误处理

导致程序无法继续执行的异常状态称为错误. js中一旦发生错误,就会自动创建一个Error类型对象 js中有6中错误类型: SyntaxError 语法错误 ReferenceError 引用错误,找不到变量或对象 TypeError 类型错误,错误的使用了对象中的方法 RangeError 范围错误,参数超范围 EvalError 调用eval函数是出错 URLError URLU错误 如何处理错误: tryCatch块 1 try{ 2 //容易出错代码 3 }catch(err){ 4 //

js错误处理和调试

1.重点关注函数和可能导致函数执行失败的因素. 2.抛出错误和使用try-catch的时机:一般来说在应用程序架构较低的层次中经常会抛出错误.这个层次并不会影响当前执行的代码. 错误也得不到真正的处理.在多应用中使用的库和应用内部多处使用的辅助函数时,抛出错误后要提供详尽的错误信息. 3.只捕获确切知道该如何处理的错误.捕获错误的目的在于避免浏览器采用默认的方式处理它们.抛出错误的目的在于提供发生错误具体原因的消息. 4.常见的错误类型:类型转换错误.数据类型错误 和 通信错误. a.类型转换错