在编程中有三种类型的错误:1.句法错误 2.运行时错误 3. 逻辑错误。
句法错误
句法错误,也叫解析错误,发生在传统编程语言的编译时和JavaScript的解释时。
例如,下面会引起一个句法错误因为缺少结束的括号。
window.print(;
运行时错误
运行时错误,也叫异常,会出现在执行过程中(在编译/解释完成之后)。
例如,下面代码会引起一个运行时错误,因为在这里句法是正确的,但是在运行时尝试调用一个不存在的方法。
window.printme();
逻辑错误
逻辑错误可能是最难追踪的错误类型。这些错误不是语法或运行时错误的结果。它们出现于在你编写代码时有逻辑错误从而在执行时不能得到预期的结果。
你没办法捕获这些错误,因为它们是你的业务代码。
try...catch...finally语句
这是 JavaScript 内置的错误处理工具,也是我们日常开发中常用的调试语句。它可以捕获运行时的错误,但是无法捕获句法错误。
句法如下:
我们把要执行的代码放入到 try 代码块中,try 后面必须跟上 catch 语句或者 finally 语句,或者 catch 语句和 finally 语句。如果执行的代码报错,会进入到 catch 中让我们有机会处理,而 finally 中的代码总是会执行,无论 try 中的代码块是否报错。
例子:
throw语句
你可以用 throw 语句触发内置的或者自定义的异常。稍后可以捕获这些异常然后处理。
throw expression;
可以抛出不同类型的异常,通常我们会配合 try..catch 语句一起使用,例如:
监听error事件
onerror 事件监听器是 JavaScript 中第一个用来处理错误的功能。 error 事件会在页面JavaScript 遇到未处理的异常时触发。
例如:
如果不考虑旧浏览器,也可以使用 addEventListener() 绑定事件监听器:
处理Promise错误
ES 6 引入了原生的 Promise 功能,让我们可以方便地处理异步操作,例如 Ajax 请求等。
同样需要处理 Promise 内部的错误,这里以 Fetch API 为例介绍如何处理 Promise 错误。
保存错误信息到服务器
有时候我们需要收集这些报错信息,例如收集用户在访问网站时的代码报错以提升代码质量。有几种方式可以发送到服务器端,这里以 navigator.sendBeacon() 为例展示如何保存到服务器:
领取专属 10元无门槛券
私享最新 技术干货