




















当运行时错误产生时,
Error对象会被抛出。Error对象也可用于用户自定义的异常的基础对象
Error 构造函数可以实例化一个 error 对象 (也就是Error 实例),而 error 对象就是一个包含了错误信息的对象。
当代码解析或者运行时发生错误,javascript 引擎就会自动产生并抛出一个 error 对象,
然后程序就中断在发生错误的地方。
demo:
const error = new Error('Whoop!'); error.message; // Whoop! error.name; // Error error.stack; // "Error: Whoops! at <anonymous>:1:13"
我们常用的 message 和 name 都是 error 的标准属性,由于各个浏览器厂商对 error 进行了不同的扩展,所以在不同的浏览器中,error 也有不同的属性和方法, 非标准属性中我们常用的是 stack 属性(很多浏览器都扩展了这一属性), 它用来表示栈跟踪信息。
ReferecnceError 错误会在找不到对象时发生,
没有定义就直接使用

当您尝试运行的代码不符合 JavaScript 的语法规则时,就会发生语法错误。
将抛出以下错误,因为我们忘记给字符串添加引号了,不符合 JavaScript 语法规则。

TypeError 错误主要发生在变量不是预期类型,
或者访问不存在的方法时发生,
实际开发过程中会有很多原因导致这种错误,
尤其是在使用类型特定的操作而变量类型不对时发生,比如这个:
let str = "hello"; str.forEach((element) => { console.log(element); });

RangeError 错误会在数值越界时抛出,
let arr = new Array(-20);
将抛出以下错误,因为定义数组时设置了并不支持的长度。

1、错误捕获:try ... catch
2、抛出错误:throw new Error
throw过程是阻塞的,程序会中断在第一个抛出错误的地方,所以后面的代码不会执行。
throw new SyntaxError('this is syntax error'); throw 123; // 不执行 throw 'hi there'; // 不执行 throw true; // 不执行

catch代码块捕获错误之后,程序不会中断,会按照正常流程继续执行下去。
demo1:
try { throw new Error('Whoops!'); } catch (e) { console.log(e.name + ':' + e.message); } console.log('hello!');

demo2
try{ console.log(a); } catch (error){ console.log(error); } console.log('还可以执行')

function something(){ if(Math.floor(Math.random()* 10)% 2 === 0){ console.log('0-10的随机数是偶数,可执行'); } else { //抛出错误 throw new Error('0-10的随机数是奇数,不执行'); } } try { something() //有可能抛出错误,需要捕获异常 } catch(error){ alert(error.message) }

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。