大家好,我是 Echa 。
本文将带你了解 JAVAscript 中常见的错误类型,处理同步和异步 JavaScript/Node.js 代码中错误和异常的方式,以及错误处理最佳实践!
1. 错误概述
JavaScript 中的错误是一个对象,在发生错误时会抛出该对象以停止程序 。在 JavaScript 中,可以通过构造函数来创建一个新的通用错误:
const err = new Error("Error");
当然,也可以省略 new 关键字:
const err = Error("Error");
Error 对象有三个属性:
- message:带有错误消息的字符串;
- name: 错误的类型;
- stack:函数执行的堆栈跟踪 。
例如,创建一个 TypeError 对象,该消息将携带实际的错误字符串,其 name 将是“TypeError”:
const wrongType = TypeError("Expected number");wrongType.message; // 'Expected number'wrongType.name; // 'TypeError'
堆栈跟踪是发生异常或警告等事件时程序所处的方法调用列表:
文章插图
它首先会打印错误名称和消息,然后是被调用的方法列表 。每个方法调用都说明其源代码的位置和调用它的行 。可以使用此数据来浏览代码库并确定导致错误的代码段 。此方法列表以堆叠的方式排列 。它显示了异常首先被抛出的位置以及它如何通过堆栈方法调用传播 。为异常实施捕获不会让它通过堆栈向上传播并使程序崩溃 。
对于 Error 对象,Firefox 还实现了一些非标准属性:
- columnNumber:错误所在行的列号;
- filename:发生错误的文件
- lineNumber:发生错误的行号
文章插图
2. 错误类型
JavaScript 中有一系列预定义的错误类型 。只要使用者没有明确处理应用程序中的错误,它们就会由 JavaScript 运行时自动选择和定义 。
JavaScript中的错误类型包括:
- EvalError
- InternalError
- RangeError
- ReferenceError
- SyntaxError
- TypeError
- URIError
这些错误类型都是实际的构造函数,旨在返回一个新的错误对象 。最常见的就是 TypeError 。大多数时候,大部分错误将直接来自 JavaScript 引擎,例如 InternalError 或 SyntaxError 。
JavaScript 提供了 instanceof 运算符可以用于区分异常类型:
try {If (typeof x !== ‘number’) {throw new TypeError(‘x 应是数字’);} else if (x <= 0) {throw new RangeError('x 应大于 0');} else {} catch (err) {if (err instanceof TypeError) {// 处理 TypeError 错误} else if (err instanceof RangeError) {// 处理 RangeError 错误} else {// 处理其他类型错误
下面来了解 JavaScript 中最常见的错误类型,并了解它们发生的时间和原因 。
(1)SyntaxError
SyntaxError 表示语法错误 。这些错误是最容易修复的错误之一,因为它们表明代码语法中存在错误 。由于 JavaScript 是一种解释而非编译的脚本语言,因此当应用程序执行包含错误的脚本时会抛出这些错误 。在编译语言的情况下,此类错误在编译期间被识别 。因此,在修复这些问题之前,不会创建应用程序二进制文件 。
SyntaxError 发生的一些常见原因是:
- 缺少引号
- 缺少右括号
- 大括号或其他字符对齐不当
(2)TypeError
TypeError 是 JavaScript 应用程序中最常见的错误之一,当某些值不是特定的预期类型时,就会产生此错误 。
文章插图
TypeError 发生的一些常见原因是:
- 调用不是方法的对象 。
- 试图访问 null 或未定义对象的属性
- 将字符串视为数字,反之亦然
- 血龙木是化学处理的木头吗 巴西龙血树的养殖方法
- 如何处理手机屏幕的划痕
- 废弃口罩的正确处理方式
- 如何处理人与自然界的关系
- 轻度发霉大米如何处理
- 戴尔笔记本开不了机怎么解决 戴尔电脑开不了机是什么原因?怎么处理
- 小乌龟溺水处理后应该怎么养 乌龟溺水了救活后该怎么调理
- 710a和710有什么区别?麒麟710a处理器很差吗?
- i7处理器的macbookpro 顶配的macbook pro
- 如何处理与老师之间的关系