错误处理机制

1、Error实例对象

js一旦发生错误都是Error构造函数的实例
var e = new Error(“这是一个错误”);
e.message;
Error实例有message(错误描述)属性。name(错误名称)和stack(错误堆栈信息)属性为非标准属性。

2、原生错误类型

Error是一般错误类型,js还定义了其余6种错误对象,也是其派生对象。

2.1、syntaxError对象

解析代码时发生的语法错误

2.2、RefrenceError对象

引用一个不存在的变量时发生的错误;
var f ;
f();

2.3、RangeError对象

超出有效范围发生的错误,一是数组越界,二是Number对象的方法超出范围

2.4、TypeError

变量或者参数不是预期类型时发生的错误。

2.5、URIError对象

URIError对象是 URI 相关函数的参数不正确时抛出的错误,主要涉及encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()这六个函数。

2.6、EvalError对象

2.7、总结

以上错误信息都是构造函数,可以使用他们,手动生成出无对象的实例。这些构造函数都接受一个参数,代表错误信息。

3、自定义错误

function UserError(message) {
  this.message = message || '默认信息';
  this.name = 'UserError';
}

UserError.prototype = new Error();
UserError.prototype.constructor = UserError;

new UserError('这是自定义的错误!');

4、Throw语句

手动中断程序执行,抛出一个错误,可以抛出Error,也可以抛出任意值。遇到throw语句程序就终止了。

5、try…catch结构

允许对错误进行处理,选择是否往下走。

6、finally代码块

try…catch不管有没有错误,都必须在最后运行的代码块。
如果try中出错了,会先停止执行,执行catch中的代码,然后执行finally中的代码块,然后再执行错误语句打印等。
如果try中有return语句,也会先执行finally里的语句,然后在return try语句中的值。

function f() {
  try {
    console.log(0);
    throw 'bug';
  } catch(e) {
    console.log(1);
    return true; // 这句原本会延迟到 finally 代码块结束再执行
    console.log(2); // 不会运行
  } finally {
    console.log(3);
    return false; // 这句会覆盖掉前面那句 return
    console.log(4); // 不会运行
  }

  console.log(5); // 不会运行
}

var result = f();
// 0
// 1
// 3

result
// false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值