当前位置: 首页 > news >正文

JavaScript语言 Error对象及错误处理机制 原生错误类型

Error实例对象

JavaScript解析或运行时,一旦发生错误,引擎就会抛出一个错误对象。

JavaScript原生提供Error构造函数,所有抛出的错误都是这个构造函数的实例。

JavaScript语言标准只提到,Error实例对象必须有message属性,表示出错时的提示信息,没有提到其他属性。因此:message:错误提示信息;name:错误名称(非标准属性);stack:错误的堆栈(非标准属性),stack属性用来查看错误发生时的堆栈。

const error = new Error('错误');
console.log(error.message) // "错误"
console.log('error.name = ', error.name);  // Error
console.log('error.stack = ', error.stack);  // Error: 错误

错误处理机制

try-catch语句,捕获和处理异常的常见方式,它允许在try块中执行可能引发异常的代码,并在 catch块中处理异常。

finally块中的代码始终会被执行,无论是否发生异常,通常用于确保资源的释放或清理工作。

try {// 可能抛出错误的代码throw new Error("This is a generic error");
} catch (error) {// 捕获错误并进行处理console.error(error.message);
} finally {// 在发生异常或未发生异常时都执行的代码console.log("Finally block executed");
}
async function checkAge(age) {if (age < 18) {throw new Error("年龄必须大于或等于18岁!");}return "年龄符合要求!";
}async function exec(age) {try {let result = await checkAge(age);console.log(result);} catch (error) {console.log('e instanceof Error ', error instanceof Error);console.log('error.name = ', error.name);  // 错误名称(非标准属性)console.log('error.stack = ', error.stack);  // 错误的堆栈(非标准属性)console.log(error.message);  // 输出:年龄必须大于或等于18岁}finally{console.log('始终会被执行.');}
}exec(12);

原生错误类型

SyntaxError对象是解析代码时发生的语法错误。

try {eval("Hello World");
} catch (error) {if (error instanceof SyntaxError) {console.error("SyntaxError:", error.message);} else {console.error("Other Error:", error.message);}
}

ReferenceError对象是引用一个不存在的变量时发生的错误。

try {console.log() = 1
} catch (error) {if (error instanceof ReferenceError) {console.error("ReferenceError:", error.message);} else {console.error("Other Error:", error.message);}
}

RangeError对象是一个值超出有效范围时发生的错误。

try {new Array(-1);
} catch (error) {if (error instanceof RangeError) {console.error("RangeError:", error.message);} else {console.error("Other Error:", error.message);}
}

TypeError对象是变量或参数不是预期类型时发生的错误。

try {new 123;
} catch (error) {if (error instanceof TypeError) {console.error("TypeError:", error.message);} else {console.error("Other Error:", error.message);}
}

URIError对象是 URI 相关函数的参数不正确时抛出的错误,主要涉及encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()这六个函数。

try {decodeURI('%2')
} catch (error) {if (error instanceof URIError) {console.error("URIError:", error.message);} else {console.error("Other Error:", error.message);}
}

http://www.dtcms.com/a/282687.html

相关文章:

  • 芯谷科技--FET偏置控制器,为卫星通信系统提供稳定偏置D8400
  • 大模型智能体(Agent)工程化:AutoGen企业级落地方案全解析
  • exports使用 package.json字段控制如何访问你的 npm 包
  • A13 GMS应用预装
  • 微服务引擎 MSE 及云原生 API 网关 2025 年 5 月产品动态
  • Git 提交信息(Commit Message)的规范校验,husky + commitlint
  • Java全栈工程师面试实录:从电商场景到AIGC的深度技术挑战
  • 手动搭建PHP环境:步步为营,解锁Web开发
  • 【尝试】基于openai-whisper进行语音转文字windows版本
  • 【项目实践】SMBMS(Javaweb版)汇总版
  • flink sql如何对hive string类型的时间戳进行排序
  • python应用day11--requests爬虫详解
  • Dify工作流节点-Agent
  • 前端上传 pdf 文件 ,前端自己解析出来 生成界面 然后支持编辑
  • 数据降维方法:PCA
  • Vue2.x封装预览PDF组件
  • 利用pdfjs实现的pdf预览简单demo(包含翻页功能)
  • 从0开始学习R语言--Day48--Calibration Curves 评估模型
  • ByteToMessageDecoder详解
  • 众趣分享 | 浅谈三维重建(空间计算)技术原理
  • STM32外设介绍5(DMA<直接存储器访问>)
  • 开源模型应用落地-qwen模型小试-Qwen3-Embedding 模型集成 vLLM 实战解析(二)
  • Python第三次作业
  • 【Node 日常使用 】
  • GitHub 趋势日报 (2025年07月15日)
  • 中望3D 2026亮点速递(1)-全新槽功能螺纹功能,减少繁琐操作
  • Oracle,PostgreSQL查看字段码值方式
  • 国内外服务器的不同之处
  • 【Qt】麒麟系统安装套件
  • 机器学习:AI 自主学习能力的来源