Js内置对象Error详解

99 篇文章 12 订阅
33 篇文章 1 订阅

Error对象

当代码运行时的发生错误,会创建新的Error 对象,并将其抛出。
通过Error的构造器可以创建一个错误对象。当运行时错误产生时,Error的实例对象会被抛出。Error对象也可用于用户自定义的异常的基础对象。下面列出了各种内建的标准错误类型。

Error作为函数使用:

当像函数一样使用 Error 时 -- 如果没有 new,它将返回一个 Error 对象。所以, 仅仅调用 Error 将产生与通过new 关键字构造 Error 对象的输出相同。 

const x = Error('I was created using a function call!');
const y = new Error('I was constructed via the "new" keyword!');

Error 类型

  • EvalError:创建一个error实例,表示错误的原因:与 eval() 有关。不在当前ECMAScript规范中使用,因此不会被运行时抛出. 但是对象本身仍然与规范的早期版本向后兼容.
  • InternalError: 创建一个代表Javascript引擎内部错误的异常抛出的实例。 如: "递归太多".该特性是非标准的,请尽量不要在生产环境中使用它!
  • RangeError:创建一个error实例,表示错误的原因:数值变量或参数超出其有效范围。
  • ReferenceError:创建一个error实例,表示错误的原因:无效引用。
  • SyntaxError:创建一个error实例,表示错误的原因:eval()在解析代码的过程中发生的语法错误。
  • TypeError:创建一个error实例,表示错误的原因:变量或参数不属于有效类型。
  • URIError:创建一个error实例,表示错误的原因:给 encodeURI()或  decodeURl()传递的参数无效。

RangeError: 

当一个值不在其所允许的范围或者集合中。

function fx () {
    fx()
}
fx()

// 会报错
// Uncaught RangeError: Maximum call stack size exceeded
// 未捕获的错误:超出最大调用堆栈大小

ReferenceError

引用错误,对象代表当一个不存在的变量被引用时发生的错误。

console.log(a) // ReferenceError: a is not defined

TypeError

 数据类型不正确的错

let b = null
// console.log(b.fx) // TypeError: Cannot read property 'fx' of nul
l

SyntaxError

语法错误

let c = """" // SyntaxError: Unexpected string

错误处理

捕获错误: try ... catch

try {
    let b = null
    b.fx()
} catch (error) {
    console.log('出错了: ', error.message)
    console.log('出错了: ', error.stack)
}
console.log('捕获错误后还可以继续向下执行')

抛出错误: throw error 

function handle () {
    if (Date.now() % 2 === 0) {
        throw new Error('时间为偶数, 不能处理逻辑')
    } else {
        console.log('时间为奇数, 可以处理逻辑')
    }
}
try {
    handle()
} catch (error) { // 捕获错误, 做相应的提示
    // 执行出错: 时间为偶数, 不能处理逻辑
    console.log('执行出错: ' + error.message)
}
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wflynn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值