当前位置: 代码迷 >> 综合 >> JavaScript 中5行代码实现自定义异常类型
  详细解决方案

JavaScript 中5行代码实现自定义异常类型

热度:20   发布时间:2024-03-10 00:52:53.0

古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏轼

自定义异常类型

如果 JavaScript 提供的异常类型不能够满足我们,我们可以自定义属于自己的异常类型,这个自定义的异常类型一般都是继承 Error 的异常类型,而且可以通过 instanceof 关键字来表示属于那种异常类型。

先来看一下 Node.js 中提供的用于自定义异常类型所提供的属性和方法,如下所示

  • error.stack 属性:返回一个字符串,字符串的第一行会被格式化为 <error class name>: <error message>,且带上一系列栈帧(每一行都以 "at " 开头)。 每一帧描述了一个代码中导致错误生成的调用点。
  • Error.captureStackTrace(targetObject[, constructorOpt]) 方法:targetObject 表示一个对象,constructorOpt 表示对象的构造函数。作用:在 targetObject 上创建一个 .stack 属性

示例代码如下

function MyError(message) {
    this.message = messagethis.name = 'MyError'/** Error.captureStackTrace(targetObject[, constructorOpt])* 参数 targetObject -> 表示一个对象* 参数 constructorOpt -> 表示对象的构造函数* 在targetObject上创建一个.stack属性, 调用是返回一个调用 Error.captureStackTrace() 的位置的字符串。*/Error.captureStackTrace(this, MyError)
}
// 使自定义的错误类型与父级的原型链断开
MyError.prototype = Object.create(Error.prototype);
MyError.prototype.constructor = MyError;// * 在node.js 环境中 new Error 会直接抛出异常 不适用于 node.js环境
// 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);
}

MyError 的原型链如下所示:

  相关解决方案