js常见错误类型

常见错误类型

  1. Error
  2. EvalError:eval函数的错误
  3. InternalError(非标准):出现在JavaScript引擎内部的错误
  4. RangeError:范围错误,当一个值不在其所允许的范围或者集合中
  5. ReferenceError:引用错误,当一个不存在的变量被引用时发生的错误
  6. SyntaxError:语法错误
  7. TypeError:类型错误
  8. URIError:URI错误

Error

我们先来看看Error.prototype里面有哪些东西:

Error是基类型,其他类型的错误类型都是继承该类型,所以所有的错误类型共享了一套相同的属性;

EvalError.prototype.__proto__ === Error.prototype;           // true
RangeError.prototype.__proto__ === Error.prototype;          // true
ReferenceError.prototype.__proto__ === Error.prototype;      // true
SyntaxError.prototype.__proto__ === Error.prototype;         // true
TypeError.prototype.__proto__ === Error.prototype;           // true
URIError.prototype.__proto__ === Error.prototype;            // true

但Error错误类型很少见,主要用于开发者自定义错误。

自定义异常类型:

function MyError (message) {
    this.name = 'MyError';
    this.message = message || 'Default Message';
    this.stack = (new Error()).stack;
}
MyError.prototype = Object.create(Error.prototype);
MyError.prototype.constructor = MyError;

try {
    throw new MyError();
} catch (e) {
    console.log(e.name);    // 'MyError'
    console.log(e.message); // 'Default Message'
}

EvalError

在ES5以下的Javascript中,当eval函数没有被正确执行时就会抛出evalError错误

如:

var myEval = eval;
myEval("alert('call eval')");

但ES5以上的JavaScript中已经不再抛出该错误,但依然可以通过new关键字来自定义该类型的错误提示。 

RangeError

当一个值超出有效范围时发生的错误。

1. 数组长度为负数

2. 将值传递给超出范围的函数,此类函数包括toFixed、toExponential、toPrecision等

3. 函数堆栈超过最大值

ReferenceError

引用错误

1. 引用了一个不存在的变量

2. 将一个值赋值给一个无法被赋值的对象

SyntaxError

语法错误

1. 变量名不合规范

2. 给关键字赋值

3. 缺少'"}等

4. JSON.parse解析内容不合法

TypeError

1. 访问未定义对象中的属性或方法时:

2. TypeError: "undefined"不是对象     "null"不是对象 

这错误发生在safari上

3. TypeError: 对象不支持xx属性或方法 

这是在IE上发生的错误 

4. TypeError:"xxx"  不是函数

URIError

URI错误,主要是相关函数的参数不正确。

主要设计encodeURI、decodeURI、encodeURIComponent、decodeURIComponent、escape、unescape这些函数中

参考资料:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Error

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值