本文详细解析JavaScript中的错误处理机制,涵盖try...catch...finally语句的语法与嵌套用法,以及throw语句抛出自定义异常的原理。重点介绍TypeError、RangeError和SyntaxError三种常见全局错误对象的特性、区别及实例判断方法,帮助开发者有效捕获并处理程序异常。
1.用途
通常情况下,一旦脚本运行中出现错误,执行会立即中断,并将错误信息打印至控制台。
使用特定的错误处理语句可以捕获这些错误并执行相应的处理逻辑,从而确保程序能够继续运行而非直接终止。
2.语法
try {
// 代码...
} catch (err) {
//err是有关错误详细信息的对象
// 错误捕获,上面代码报错就会转到这个代码块,而不会停止运行
} finally {
//无论是否有异常抛出或捕获它总是执行
}
该语句支持嵌套使用。
3.实操
Catch 用于捕获所有 error。
若当前无法确定具体的处理方式,可直接使用 throw err 将错误向上抛出。
throw 操作符用于生成一个 error 对象。
该操作符用于抛出一个用户自定义的异常。执行throw语句后,当前函数的后续代码将不再执行,控制权会移交至调用堆栈中的第一个catch块。若调用者函数中不存在catch块,程序将会终止。
示例:
throw "Error1"; // 抛出了一个值为字符串的异常
throw 4; // 抛出了一个值为整数4的异常
/*JavaScript 中有很多内建的标准 error 的构造器:Error,SyntaxError,ReferenceError,TypeError 等。我们也可以使用它们来创建 error 对象。*/
let error = new Error("Things happen o_O");
alert(error.name); // Error
alert(error.message); // Things happen o_O
//json的异常
try {
JSON.parse("{ bad json o_O }");
} catch(e) {
alert(e.name); // SyntaxError
alert(e.message); // Unexpected token b in JSON at position 2
}
补充:
try块中的代码可能抛出三种异常:TypeError,RangeError,SyntaxError
部分读者可能不清楚这三者的具体含义,此处进行说明。
它们均为全局对象,自身不包含任何方法,但通过原型链继承了一些通用方法。
可以使用 instanceof 操作符来判断错误的具体类型:
TypeError:(类型错误)当值的类型不符合预期时发生的错误。RangeError: 当一个值不在其允许的范围或集合中时标明的错误。SyntaxError: 当JavaScript引擎在解析代码时发现不符合语法规范的tokens或token顺序时抛出。
实例:
catch (e) {//以下是这个对象的参数属性
console.log(e instanceof TypeError); // true
console.log(e.message); // "描述此错误"
console.log(e.name); // "TypeError"
console.log(e.fileName); // "引起该异常的代码所在的文件的名字"
console.log(e.lineNumber); // 引起该异常的代码的行号
}
到此这篇关于JavaScript错误处理try..catch...finally+涵盖throw+TypeError+RangeError的文章就介绍到这了,更多相关JavaScript错误处理内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!