千家信息网

JavaScript如何自定义异常

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章给大家分享的是有关JavaScript如何自定义异常的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.概念1.1什么是错误与异常所谓的错误就是编程的过程中使程序不能
千家信息网最后更新 2026年11月03日JavaScript如何自定义异常

这篇文章给大家分享的是有关JavaScript如何自定义异常的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

1.概念

1.1什么是错误与异常

所谓的错误就是编程的过程中使程序不能正常运行的状态,也称为异常。

在JavaScript中所有的异常都是Error对象,遇到异常就会抛出一个Error对象,这个对象中包含错误的描述信息。

通过JavaScript提供的异常处理语句,我们可以用结构化的方式来捕捉发生的错误,让异常处理代码与核心业务代码实现分离。

1.2异常的分类

在实际的开发中,异常可以主要分为以下三种:

  • 逻辑错误:逻辑错误是最难被追踪的错误类型。这些错误是由于程序运行的逻辑上出现错误,从而导致你的脚本程序并不能得到你想要的结果。

  • JavaScript自带错误:这是最为常见的错误类型,例如发生JavaScript的语法错误、代码引用错误、类型错误等,JavaScript的引擎都会自动触发这些错误。

  • 开发者主动抛出的错误:一般都是开发者为了满足自己的需求所定义出的错误

2.异常处理

2.1try...catch语句

try...catch语句是JavaScript中处理异常的一种标准方式,语法结构如下所示:

try {     // 供测试的代码块} catch(err) {     // 处理错误的代码块}

参数:

  • try:语句允许您定义一个代码块,以便在执行时检测错误。

  • catch:语句允许你定义一个要执行的代码块,如果try代码块中发生错误将会执行此代码块

  • err:一个标识符,此标识符表示一个Error对象,错误的类型与测试代码块中的错误与之对应。

示例代码如下所示:

try {  // 用于测试有没有出错的代码块  console.log(v) // 此时v没有定义将会抛出异常} catch (error) {  // 抛出异常将执行此代码块  console.log('上述代码有错误')}

值得注意的是**try和catch**语句是成对出现的

2.2finally语句

finally语句又称为终结块,此语句块会在try和catch语句结束之后执行,无论结果是否报错。

语法结构如下所示:

try {     // 供测试的代码块} catch(err) {     // 处理错误的代码块}  finally {     // 无论 try  catch 结果如何都执行的代码块}

示例代码如下所示:

// var vtry {  // 用于测试有没有出错的代码块  console.log(v) // 此时v没有定义将会抛出异常} catch (error) {  // 抛出异常将执行此代码块  console.log('上述代码有错误')} finally {  console.log('我必须被执行')}

2.3throw语句

throw****语句用来抛出一个用户自定义的异常。此异常可以是任何数据类型。当执行throw语句时,当前执行将会被停止,如果有catch块,则会执行catch块,否则将跳出循环。

语法格式如下:

throw expression;

expression:要抛出的表达式

使用throw语句来抛出一个异常。当你抛出异常时,expression指定了异常的内容。

示例代码如下所示:

// throw "错误"  // 输出 错误throw false   // 输出 false

当然,throw后面也可以是一个对象

3.Error对象

通过Error的构造器可以创建一个错误对象。当运行时错误产生时,Error的实例对象会被抛出。一般情况下Error类型的错误很少见,基本都是其他错误类型的,但是其他错误类型都是继承于Error的。

Error对象主要用于用户自定义的异常的基础对象。

除了Error对象外,JavaScript还提供了如下几种预定义类型的错误

错误名描述
EvalError已在eval()函数中发生的错误
RangeError已发生超出数字范围的错误
ReferenceError已发生非法引用
SyntaxError已发生语法错误
TypeError已发生类型错误
URIError在encodeURI()中已发生的错误

Error的属性主要有如下两个:

属性描述
name设置或返回错误名
message设置或返回错误消息(一条字符串)

创建Error对象的实例语法格式如下所示:

new Error([message)

参数:

message:可选,描述的错误信息

其他预定义类型的创建语法与Error相同

3.1自定义异常类型

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

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

如下所示:

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

示例代码如下:

function MyError(message) {  this.message = message  this.name = 'MyError'  /*   * Error.captureStackTrace(targetObject[, constructorOpt])   * 参数 targetObject -> 表示一个对象   * 参数 constructorOpt -> 表示对象的构造函数   * 在targetObject上创建一个.stack属性, 调用是返回一个调用 Error.captureStackTrace() 的位置的字符串。   */  Error.captureStackTrace(this, MyError)}MyError.prototype = new Error()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)}

感谢各位的阅读!关于"JavaScript如何自定义异常"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

错误 代码 类型 对象 语句 语法 属性 处理 测试 参数 字符 字符串 示例 内容 函数 格式 程序 结构 结果 逻辑 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网最新的科技有限公司 唐信互联网科技 极限挑战互联网科技 壹账通互联网科技 天津摩尔互联网科技 深圳市运趣互联网科技有限公司 北京三清互联网科技 互联网为啥属于高科技 杭州壁岐互联网科技有限公司 互联网科技大奖都有哪些公司 深圳市罗太互联网科技有限公司 众安科技工业互联网合作 广州千川互联网科技有限公司 杭州披云加互联网科技有限公司 美国五大互联网科技公司市值多少 绵阳真晨互联网科技有限公司 第三届互联网大会安防黑科技 互联网科技大佬云集 广东猫王互联网科技有限公司电话 山东亿川互联网科技有限责任公司 互联网和科技技术 河南真二互联网科技有限公司 亿策互联网科技 北京互联网络科技有限公司 互联网金融科技委员会 老年人脱离互联网科技的作文 深圳市罗太互联网科技有限公司 互联网方面的科技前沿 同城互联网络科技 互联网对科技影响
0