js-错误处理机制

错误类型

Error实例对象、原生错误类型、自定义错误。

错误类型详解

1.error实例对象

JavaScript 解析或运行时,一旦发生错误,引擎就会抛出一个错误对象。JavaScript 原生提供Error构造函数,所有抛出的错误都是这个构造函数的实例。

2.原生错误类型

1.SyntaxError 对象 语法

2.ReferenceError 对象 引用一个不存在的变量时发生的错误或将一个值分配给无法分配的对象

eg:`// 等号左侧不是变量
console.log() = 1`
// this 对象不能手动赋值
this = 1

3.RangeError 对象 一个值超出有效范围

4.TypeError 对象 对象是变量或参数不是预期类型

5.URIError 对象 URI 相关函数的参数不正确时

6.EvalError 对象 eval函数没有被正确执行时

自定义错误类型

function ownError(mes){
this.mes=message||'自定义异常' 
} 
ownError.prototype=new Error();
ownError.prototype.constructor=ownError;

异常捕获

1.Throw

在这里插入图片描述
throw可以抛出任何类型的值,程序遇到throw后就会终止。

2.try…catch

确保程序能够正常执行。对错误进行处理,选择是否往下执行。

try{throw new Error('抛出错误');}catch(e){console.log(e.name);console.log(e.stack);}

捕获不同类型的错误

try {
  foo.bar();
} catch (e) {
  if (e instanceof EvalError) {
    console.log(e.name + ": " + e.message);
  } else if (e instanceof RangeError) {
    console.log(e.name + ": " + e.message);
  }
  // ...
}

3.finally代码块

不管是否出现错误,都必需在最后运行的语句。
在这里插入图片描述

function idle(x) {
  try {
    console.log(x);
    return 'result';
  } finally {
    console.log("FINALLY");
  }
}

idle('hello')
// hello
// FINALLY
// "result"
var count = 0;
function countUp() {
  try {
    return count;
  } finally {
    count++;
  }
}

countUp()
// 0
count
// 1

如果写出
finally 子句,catch 块就成了可选的.
详情见js红皮第21章21.2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值