千家信息网

JavaScript如何自定义异常

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章给大家分享的是有关JavaScript如何自定义异常的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.概念1.1什么是错误与异常所谓的错误就是编程的过程中使程序不能
千家信息网最后更新 2025年01月21日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语句又称为终结块,此语句块会在trycatch语句结束之后执行,无论结果是否报错。

语法结构如下所示:

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安全错误 数据库的锁怎样保障安全 电商erp软件开发服务多少钱 众维网络技术有限公司怎么样 天津正规软件开发诚信服务 天津筑牢校园网络安全防护 德阳一手楼盘销售软件开发 南京软件开发大概要多少钱 计算机三级网络技术激活码 团委网络安全宣传 wind数据库下载不了 网络安全冬奥会准备情况 服务器倒机 宜昌极客网络技术有限公司 网络安全知识简单又好看的手抄报 工厂smt软件开发 用软件开发的模板框架和算法 赤月恶魔数据库 上海车载网络技术 java数据库编程使用教程 千船网络技术有限公司怎么样 网络技术培训要资质吗 服务器ping默认频率 长途汽车信息安全数据库 网络安全法是为保障 社会舆情和网络安全工作方案 罗定E天空服务器解析异常 世界上最好的数据库系统 浦江软件开发设计 公安部网络安全保卫局管辖对象 路由器无法连接服务器 网络安全法和国家标准怎么区分
0