JavaScript中的Error类

简介: # 引言今天来和大家一起学习一下JavaScript中的Error类。# Error类JavaScript中的throw和catch语句可以抛出和捕获任何JavaScript的值,包括原始值等。虽然没有用来表示错误的异常类型,但是JavaScript中定义了一个Error类。惯用的做法是使用Error类或其子类的实例作为throw抛出的错误。使用Error对象的一个主要原因就是在创建Error对象时,该对象能够捕获JavaScript的栈状态,如果异常没有被捕获,则会显示包含错误消息的栈跟踪信息,而这对排查错误很有帮助。(栈跟踪信息会展示创建Error的地方,而不是throw语句抛

引言

今天来和大家一起学习一下JavaScript中的Error类。

Error类

JavaScript中的throw和catch语句可以抛出和捕获任何JavaScript的值,包括原始值等。虽然没有用来表示错误的异常类型,但是JavaScript中定义了一个Error类。惯用的做法是使用Error类或其子类的实例作为throw抛出的错误。使用Error对象的一个主要原因就是在创建Error对象时,该对象能够捕获JavaScript的栈状态,如果异常没有被捕获,则会显示包含错误消息的栈跟踪信息,而这对排查错误很有帮助。(栈跟踪信息会展示创建Error的地方,而不是throw语句抛出他的地方。)

Error对象有两个属性:message和name,还有一个toString()方法。message属性的值是我们传给Error()构造函数的值。必须时会被转换为字符串,对使用Error()创建的错误对象,name属性的值始终是"Error"。toString()方法返回一个字符串,由name属性的值的后面跟一个冒号和一个空格,然后跟着message属性的值构成。

虽然ECMAScript标准中没有定义,但是Node和所有现代浏览器也都在Error对象上定义了stack属性。这个属性的值是一个多行字符串,包含创建错误对象时JavaScript调用栈跟踪信息。在捕获到异常错误时,可以将这个值的信息作为日志收集起来。

除了Error类,js中还定义了一些他的子类,以便于出啊发ECMAScript定义的一些特殊类型的错误。这些子类包括:EvalError,RangeError,ReferenceError,SyntaxError,TypeError和URIError。你可以按照自己认为合适的方法在代码中使用这些错误类。与基类Error一样,这些子类也都有一个构造函数,接收一个消息参数,每个子类的示例都有一个name属性,其值就是构造函数的名字。

作为开发者,我们可以自己定义Error的子类,以便于更好的封装自己程序的错误信息。自定义的错误对象可以不限于message和name属性。在定义自己的子类的时候,可以任意添加新属性以提供更多的错误细节。

实例

class HttpError extends Error {
    constructor(status , statusText , url ) {
        super(`${status} ${statusText} : ${url}`);
        this.status = status;
        this.statusText = statusText;
        this.url = url;
    }
    get name() {
        return "HttpError";
    }
    let error = new HttpError(404 , "Not Found" , "http://example.com");
    error.status;
    error.statusText;
    error.url;
相关文章
|
4天前
|
JavaScript 前端开发
记录Javascript数组类练习
记录Javascript数组类练习
|
7天前
Crypto-JS——Uncaught Error: Malformed UTF-8 data
Crypto-JS——Uncaught Error: Malformed UTF-8 data
14 0
|
2月前
|
JavaScript 前端开发
记录Javascript数组类练习
记录Javascript数组类练习
17 1
|
2月前
|
JavaScript 前端开发 Java
【JavaScript】ECMAS6(ES6)新特性概览(二):解构赋值、扩展与收集、class类全面解析
【JavaScript】ECMAS6(ES6)新特性概览(二):解构赋值、扩展与收集、class类全面解析
30 2
|
2月前
|
存储 JavaScript 前端开发
【JavaScript】JavaScript 中的 Class 类:全面解析
【JavaScript】JavaScript 中的 Class 类:全面解析
42 1
|
1月前
|
JavaScript API
若依没解构送post请求出现的bug,vue.runtime.esm.js:620 [Vue warn]: Error in mounted hook: “TypeError: (0 , _inde
若依没解构送post请求出现的bug,vue.runtime.esm.js:620 [Vue warn]: Error in mounted hook: “TypeError: (0 , _inde
|
1月前
|
JavaScript 索引
js 类数组 转 数组
js 类数组 转 数组
28 0
|
1月前
|
JavaScript 前端开发
JavaScript编码之路【ES6新特性之Class类】(二)
JavaScript编码之路【ES6新特性之Class类】(二)
15 0
|
1月前
|
JavaScript 前端开发
JavaScript编码之路【ES6新特性之Class类】(一)
JavaScript编码之路【ES6新特性之Class类】(一)
23 0
|
2月前
|
JavaScript 前端开发 Java
深入ES6:解锁 JavaScript 类与继承的高级玩法
深入ES6:解锁 JavaScript 类与继承的高级玩法

热门文章

最新文章