`
yumingtao
  • 浏览: 19530 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

JavaScript中的异常捕获

 
阅读更多

在JavaScript可以使用try...catch来进行异常处理。例如:

 

try {
	foo.bar();
} catch (e) {
	alert(e.name + ": " + e.message);
}

目前我们可能得到的系统异常主要包含以下6种: 

  • EvalError: raised when an error occurs executing code in eval()
  • RangeError: raised when a numeric variable or parameter is outside of its valid range
  • ReferenceError: raised when de-referencing an invalid reference
  • SyntaxError: raised when a syntax error occurs while parsing code in eval()
  • TypeError: raised when a variable or parameter is not a valid type
  • URIError: raised when encodeURI() or decodeURI() are passed invalid parameters

上面的六种异常对象都继承自Error对象。他们都支持以下两种构造方法: 

 

new Error();
new Error("异常信息");

手工抛出异常的方法如下:

 

try {
	throw new Error("Whoops!");
} catch (e) {
	alert(e.name + ": " + e.message);
}

如要判断异常信息的类型,可在catch中进行判断:

 

try {
	foo.bar();
} catch (e) {
	if (e instanceof EvalError) {
		alert(e.name + ":" + e.message);
	} 
	else if (e instanceof RangeError) {
		alert(e.name + ": " + e.message);
	} 
	// etc 
}

Error具有下面一些主要属性: 

  • description: 错误描述 (仅IE可用).
  • fileName: 出错的文件名 (仅Mozilla可用).
  • lineNumber: 出错的行数 (仅Mozilla可用).
  • message: 错误信息 (在IE下同description)
  • name: 错误类型.
  • number: 错误代码 (仅IE可用).
  • stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用).

因此为了更好的了解错误信息我们可以将catch部分改为如下形式:

 

try {
	foo.bar();
} catch (e) {
	if (browserType != BROWSER_IE) {                            
		alert("name: " + e.name + 
			"message: " + e.message + 
			"lineNumber: " + e.lineNumber + 
			"fileName: " + e.fileName + 
			"stack: " + e.stack);        
	} 
	else {                    
		alert("name: " + e.name +     
			"errorNumber: " + (e.number & 0xFFFF ) + 
			"message: " + e.message");        
	} 
}

JavaScript中的throw命令事实上可以抛出任何对象,并且我们可以在catch接受到此对象。例如:

 

try {
	throw new Date();	// 抛出当前时间对象 
} catch (e) {
	alert(e.toLocaleString());	// 使用本地格式显示当前时间 
}

 

分享到:
评论

相关推荐

    JavaScript中的异常捕捉介绍

    与Java语言相同,JavaScript可以通过throw语句来抛出异常。与Java语言不同的是,JavaScript中可以通过throw语句抛出所有类型的值,而不仅止于抛出错误对象。 代码如下: //Throw an Error object. try{  throw new...

    深入理解JavaScript系列

    第3部分深入探索JavaScript,介绍了语法、值、运算符、布尔类型、数字、字符串、语句、异常捕获、函数、变量、对象与继承、数组、正则表达式、Date、Math、JSON、标准全局变量、编码和JavaScript、ECMAScript 5的新...

    【JavaScript源代码】express异步函数异常捕获示例详解.docx

    express异步函数异常捕获示例详解  在express中时使用 Async/await 编写异步代码时,每个 async 函数都要包裹在try/catch中,代码量多了看着冗余不优雅,express又不像koa的异步机制可以订阅全局的error事件,为了...

    javascript编程异常处理实例小结

    前言:在前一篇《asp.net开发中常见公共捕获异常方式总结》,我们整理总结了asp.net服务端的异常处理。这一篇接着前文,简单总结并讨论一下javascript在客户端的异常处理。这样asp.net的服务端和客户端异常处理我们...

    javascript 异常处理使用总结

    JavaScript中的异常可以用try..catch..finally语句来处理,也可以手动的来抛出异常。 1.使用try..catch..finally语句来处理异常 js代码在执行过程中如果出现异常,会手动创建一个异常类对象,该异常类对象将被提交给...

    javascript中的try catch异常捕获机制用法分析

    主要介绍了javascript中的try catch异常捕获机制,简单分析了try catch异常捕获机制的基本定义与使用方法,需要的朋友可以参考下

    JavaScript中的事件与异常捕获详析

    主要给大家介绍了关于JavaScript中事件与异常捕获的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    JavaScript代码异常监控实现过程详解

    JavaScript异常一般有两方面:语法错误和运行时错误。两种错误的捕获和处理方式不同,从而影响具体的方案选型。通常来说,处理JS异常的方案有两种:try…catch捕获 和 [removed]捕获。以下就两种方案分别分析各自的...

    JavaScript详解(第2版)

     7.2.2 使用try/catch和throw捕捉异常   7.3 应知应会   练习   第8章 对象   8.1 什么是对象   8.1.1 对象及点语法   8.1.2 使用构造函数创建对象   8.1.3 对象的属性   8.1.4 对象的方法...

    JavaScript 异常处理 详解

    前端工程师都知道 JavaScript 有基本的异常处理能力。我们可以 throw new Error(),浏览器也会在我们调用 API 出错时抛出异常。...所以我们还是有必要捕获和分析这些异常信息的,然后我们就可以修改代码

    JavaScript集锦

    (5)使用 onerror 事件是一种老式的标准的在网页中捕获 Javascript 错误的方法。 - 11 - (6)你可以在 JavaScript 中使用反斜杠来向文本字符串添加特殊字符。 - 12 - (7)JavaScript 指导方针 - 13 - JavaScript ...

    JavaScript测试框架MochaJS.zip

    Mocha 可以持续运行测试,支持灵活又准确的报告,当映射到未捕获异常时转到正确的测试示例。 特性: 支持浏览器 支持简单异步,包括 promises 测试覆盖...

    js异常捕获方法介绍

    //抛出异常 }finally{<BR> // 完成后执行的语句块,非必须<BR>} [removed] javascript Error 对象: name: 错误名称number: 错误号description: 描述信息 message: 错误信息 fileName: 错误发生的文件 stack: ...

    捕获和分析JavaScript Error的方法

    如何捕获和分析 JavaScript Error 前端工程师都知道 JavaScript 有基本的异常处理能力。我们可以 throw new Error(),浏览器也会在我们调用 API 出错时抛出异常。但估计绝大多数前端工程师都没考虑过收集这些异常...

    JavaScript王者归来part.1 总数2

     3.6 浏览器捕获异常   3.7 总结   第二部分 JavaScript核心  第4章 语言结构  4.1 JavaScript的基本文法   4.2 常量和变量   4.3 表达式和运算符符   4.4 控制语句 句   4.5 总结   第5章 数据...

    catchall:捕获所有 javascript 错误

    动机捕获 JavaScript 中抛出的所有异常。 在错误的来源处捕获错误。 能够在alpha 测试时记录错误并将错误发送到服务器。 受到和 node.js 的uncaughtException事件的。 确定 try/catch 块在不应该使用的地方使用。...

    rescue:根据类型和属性有条件地捕获JavaScript异常

    根据类型和属性有条件地捕获JavaScript异常。 什么在哪里讨论 文献资料 来源 问题 CI 承保范围: 执照: 麻省理工学院npm install rescue。

    JS高级调试技巧:捕获和分析 JavaScript Error详解

    反正只要 JavaScript 出错后刷新不复现,那用户就可以通过刷新解决问题,浏览器不会崩溃,当没有发生过好了。这种假设在 Single Page App 流行之前还是成立的。现在的 Single Page App 运行一段时间后状态复杂无比,...

Global site tag (gtag.js) - Google Analytics