当 JavaScript 引擎执行 JavaScript 代码时, 会发生各种错误: 语法错误, 拼写错误或语言中缺少的功能, 由于来自服务器或用户的错误输出而导致的错误. 本文就来为大家介绍一下 JavaScript 错误处理方法.
1,try-catch
ECMA-262 第 3 版引入了 try-catch 语句, 基本的语法如下所示:
- try {
- }
- catch(error) {
- }
如果 try 块中的任何代码发生错误, 就会立即执行 catch 块. 此时, catch 块会接收到一个包含错误信息的对象. 即使不使用这个错误对象, 也要起个名字, 对象中包含的实际信息因浏览器而异, 但共同的是一个保存错误消息的 message 属性, ECMA-262 还规定了一个保存错误类型的 name 属性, 所有浏览器都支持这个属性 (Opera 9 之前的版本除外).
2,finally
虽然在 try-catch 块中是可选的, 但 finally 子句一经用, 无论如何都会执行, 甚至 return 语句都不会阻止, 例如:
- function test() {
- try {
- return 1;
- }
- catch(error) {
- return 2;
- }
- finally {
- return 3;
- }
- }
3, 错误类型
每种错误都有对应的错误类型, 而当错误发生时, 就会抛出相应类型的错误对象, ECMA-262 定义了 7 种错误类型:
1) Error: 基类型.
2) EvalError: 使用 eval() 函数发生异常时抛出.
3) RangeError: 数值超出相应范围时抛出.
4) ReferenceError: 找不到对象时抛出.
5) SyntaxError: 使用 eval() 函数中的字符串有语法错误时抛出.
6) TypeError: 在变量中保存意外类型或访问不存在的方法时抛出.
7) URIError: 使用 encodeURI 或 decodeURI() 中 URI 格式不正确时抛出.
4, 抛出错误
与 try-catch 相配的还有一个 throw 操作符, 用于抛出自定义错误. 抛出错误时, 必须给 throw 操作符指定一个值, 这个值的类型没有要求, 例如:
- throw 123;
- throw "Hello World!";
在遇到 throw 操作符时, 代码会立即停止执行.
5, 错误事件
没有通过 try-catch 处理的错误都会触发 Windows 对象的 error 事件. 任何浏览器中, onerror 事件处理程序都不会创建 event 对象, 但它可以接受 3 个参数: 错误消息, 错误所在的 URL 和行号.
只要发生错误, 无论是不是浏览器生成的, 都会触发 error 事件, 并执行这个事件处理程序, 如果在事件处理程序中返回 false, 可以阻止浏览器报告错误的默认行为.
例如:
- Windows.onerror = function(message, url, line) {
- alert(message);
- return false;
- }
图像也支持 error 事件, 只要图像的 src 属性中的 URL 不能返回可以被识别的图像格式, 就会触发 error 事件.
本文来自 JavaScript 教程 https://www.html.cn/web/javascript/ 栏目.
来源: http://www.css88.com/web/javascript/17077.html