JavaScript中的try...catch和异常处理

在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());	// 使用本地格式显示当前时间 }
原文:http://www.scdyl.com/blo/post/263.html
时间: 2024-10-15 18:46:39

JavaScript中的try...catch和异常处理的相关文章

在java中的Try Catch块-------------异常处理(2)

1. Try块是什么? Try块是一块可能产生异常的代码块,一个Try块可能跟着Catch块或者Finally块,或者两者. Try块的语义: try{ //statements that may cause an exception } 2. Catch块是什么? 一个Catch块关联一个Try块,如果在Try块中有一个特定类型的异常发生,则响应的Catch块会执行,例如, 如果在Try块中arithmmetic exception发生,那么对应arithmmetic exception的Ca

[译]Javascript中的错误信息处理(Error handling)

本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU&list=PL6n9fhu94yhUA99nOsJkKXBqokT3MBK0b 在Javascript中使用try/catch/finally来处理runtime的错误.这些runtime错误被称为exceptions.各种各样的原因都可能导致exception.比如,使用没有申明的变量或者方法都可

C++、Java、JavaScript中的异常处理(Exception)

编程思想之异常处理 什么叫异常处理? 什么叫异常(Exception)?顾名思义就是非正常的情况,出现了不希望出现的意外,异常处理就是遇到这种意外时准备的对策和解决方案.比如您开着一辆劳斯莱斯在公路上行走,突然前面出现一个小孩,幸好您眼疾手快紧急刹车,而避免了一场交通事故.在这个例子中突然出现的小孩就是异常,紧急刹车就是异常处理(面对这种突发情况采取的解决方案). 程序来源于现实,是现实的抽象和模拟,也会有异常,因此异常的处理就显示的极为重要.试想如果您的手机的某个应用使用两下就崩溃了,或都出现

[Javascript] Try...Catch和异常处理

在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 num

【转】详解JavaScript中的异常处理方法

有三种类型的编程错误:(1)语法错误和(2)运行时错误(3)逻辑错误:语法错误: 语法错误,也被称为解析错误,在编译时进行传统的编程语言,并出现在JavaScript解释时. 例如,下面一行将导致一个语法错误,因为它缺少一个右括号: <script type="text/javascript"> <!-- window.print(; //--> </script> 当一个语法错误在JavaScript中出现,只有在同一个线程中包含的语法错误的影响,

C++、Java、JavaScript中的日志(log)

编程思想之日志记录 什么是log? 相信你一定用日记写过点滴心事,或是用空间.微信.微博刷着动态,记录你每天的喜怒哀乐!在程序中也有一种类似的东西,记录着他主人(应用程序)每天的行踪,他叫日志(log).日记--是人类生活的记事本,日志(log)--是程序运行状况的记事本. 顾名思义,日志(log,后面均以log称之)就是用来记录程序每天的运行状况的,比如程序出现异常的情况,或是某个关键点,功某个重要的数据或交易等.这里的每天不是说每天一记,可以是伴随着程序运行的始终,只要程序在运行着就一直在记

[转] Javascript 中的大括号 “{}” 的多义性

Javascript 中的大括号有4种语义作用 语义1 : 组织复合语句,这是最常见的 1 if( condition ) { 2 //... 3 }else { 4 //... 5 } 6 for() { 7 //... 8 } 语义2 : 对象直接量声明 1 var obj = { 2 name : 'jack', 3 age : 23 4 }; 整个是个赋值语句,其中的{ name : 'jack', age:23 }是个表达式. 语义3 : 声明函数或函数直接量 1 function f

JavaScript中事件绑定的方法总结

最近收集了一些关于JavaScript绑定事件的方法,汇总了一下,不全面,但是,希望便于以后自己查看. JavaScript中绑定事件的方法主要有三种: 1 在DOM元素中直接绑定 2 JavaScript代码中直接绑定 3 绑定事件监听函数 一.在DOM元素中直接绑定 也就是直接在html标签中通过 onXXX=“” 来绑定.举个例子: <input type="button" value="点我呦" onclick="alert("he

JavaScript中的数组与伪数组的区别

在JavaScript中,除了5种原始数据类型之外,其他所有的都是对象,包括函数(Function). 5种原始数据类型: number boolean string null undefined 在这个前提下,咱们再来讨论JavaScript的对象. 1.创建对象 var obj = {}; //种方式创建对象,被称之为对象直接量(Object Literal) var obj = new Object(); // 创建一个空对象,和{}一样 更多创建对象的知识,参见<JavaScript权威