无论是浏览器控制台还是Node.js在异常处理之前,了解JavaScript中的几种异常类型是非常有必要的。ErrorError是最基本的错误类型,其他错误类型继承自该类型。Error对象主要有两个重要的属性message和name,分别代表错误信息和错误名称。程序运行过程中抛出的异常一般都有特定的类型,Error类型一般是开发者自己抛出的异常。try{thrownewError('ConardLi抛出的异常');}catch(error){console.log(error);}SyntaxError-语法错误语法错误也称为解析错误。语法错误是任何编程语言中最常见的错误类型,表示没有遵循编程语言的语法规范。JavaScript是一种解释型语言。执行一段代码时,需要经过词法分析->语法分析->语法树,才能开始解释执行:词法分析就是将一个字符流(charstream)转换成一个记号流(tokenstream),解析阶段从令牌流生成抽象语法树(AST)。在这两个阶段,如果Javascript引擎发现了意想不到的/无法使用的token,或者token的顺序与预期不一致,就会抛出SyntaxError。因此,SyntaxError应该与其他类型的异常区分开来。这种类型的异常发生在JavaScript被解析/编译时。一旦出现这样的异常,整个js文件就无法执行,而其他异常则在代码运行时出现。此类错误会导致发生错误的行之后的代码无法执行,但该行之前的代码不受影响。TypeError——最常见的类型错误运行时异常,表示变量或参数不是预期的类型,例如new关键字后面必须跟构造函数,()前面必须是函数。ReferenceError-引用不存在的变量时发生引用错误。每当我们创建或定义一个变量时,变量名被写入一个变量存储中心。这个变量存储中心就像一个键值存储。每当我们引用一个变量时,它都会在存储中找到Key并提取并返回Value。如果我们要查找的变量不在存储中,则会抛出ReferenceError。请注意,如果我们调用一个存在的变量的不存在的属性,不会抛出ReferenceError,因为变量本身已经在存储中,调用它不存在的属性只会是undefined,并且是undefined:RangeError-边界错误表示超出有效范围时发生的异常,主要有以下几种情况:数组长度为负数或超长数字类型的方法参数超出预定义范围函数栈调用超过最大值URIError-URLerror调用URI相关方法时URL无效抛出的异常主要有encodeURI、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()、unescape()函数:自定义异常另外,在为了满足各种不同的业务需求,除了JavaScript已经给出的异常类型,我们还可以自定义一些异常类型,比如我们要给用户di根据不同的异常类型提示不同的错误:errorinstanceofParamError){return'参数错误';}}
