javascript try catch捕获异常
- 博客分类:
- 技术杂绘
javascript try catch捕获异常
2011年03月26日
try{
//code to run
[break;]
}catch([exception]){
//code to run if an exception occurs and the exception is matched
[break;]
}[finally{
//code that is always executed regardless of exception occurring
}]
例如
try{
window.openMyWindow();
alert("Method complete!");
}catch(exception){
alert("an exception occurred");
}finally{
alert("end fo try...catch test.");
}
运行try...catch语句时,解释程序首先进入try关键词后的代码块。执行 window.openMyWindow();时,会产生错误。这时,解释程序立刻从try子句中退出,然后进入catch子句,跳过剩下的代码(alert("Method complete!");)。在catch中的alert被执行,然后继续执行finally子句中的代码。
与java C#不同,javascript在try...catch语句中只能有一个catch子句。因为javascript是弱类型语言,没办法指明catch子句中异常的特定类型,不管是什么错误类型,都是由同一个catch子句处理。而finally子句不管是否发生异常,都要执行当中的代码。
try...catch的嵌套
在try...catch语句中,如果catch子句中也发生错误,那么就可以使用嵌套的try...catch语句。
try{
eval_r("a++b");
}catch(oException){
alert("An exception occurred");
try{
var aErrors=new Array(100000000000000000000000); //caurse error
aError.push(exception)
}catch(oException2){
alert("Another exception occurred");
}
}finally{
alert("all done");
}
上面例子中,抛出第一个错误后,立刻出现第一个警告框。继续执行第一个catch子句时,由于尝试创建一个超大的数组,出现了另一个错误。于是进入第二个catch子句,并显示警告框,最后进入finally子句,执行完毕。
Error对象
javascript有个Error基类用于抛出。Error对象具有以下特性:
name---表示错误类型的字符串
message---实际的错误信息
Error对象的名称对应于它的类,可以是以下值之一
类 发生原因 EvalError 错误发生在eval_r()函数中 RangeError 数字的值超出了 javascript可表示的范围即超出了Number.MIN_VALEU和Number.MAX_VALUE ReferenceError 使用了非法的引用 SyntaxError 在eval_r()函数调用中发生了语法错误 TypeError 变量的类型不是预期所需的 URIError 在encodeURI()或者decodeURI()函数中发生了错误。 message特性可为用户提供更加有意义的信息,同时可以阻止浏览器直接报告错误:
try{
window.openMyWindow();
alert("Method complete");
}catch(oException){
alert("An exception occurred:"+message.name);
}finally{
alert("End of try...catch test.");
}
判断错误类型
1.使用Error对象的name特性
try{
window.openMyWindow();
alert("Method complete");
}catch(oException){
if(oExceptioin.name=="SyntaxError"){
alert("Syntax Error:"+oException.message);
}else{
alert("An unexpected orror occurred:"+oException.message);
}
}
2.使用instanceof操作符,并使用不同错误的类名:
try{
window.openMyWindow();
alert("Method complete");
}catch(oException){
if(oExceptioin instanceof SyntaxError){
alert("Syntax Error:"+oException.message);
}else{
alert("An unexpected orror occurred:"+oException.message);
}
}
抛出异常 throw
throw语法如下
throw error_object;
error_object可以是字符串、数字、布尔值或者是实际对象
throw "An error occurred";
throw 1234;
throw true;
throw new Object();
也可以抛出一个Error对象。Error对象的构造函数只有一个参数,错误信息。例如
throw new Error("You tried to do something bad");
其他的Error子类也可以:
throw new SyntaxError("I don't like your syntax");
throw new TypeError("What type of variable do you take me for?");
throw new RangeError("Sorry,you just don't have the range.");
throw new EvalError("That doesn't evaluate.");
throw new UEIError("Uri,is that you?");
throw new ReferenceError("you didn't cite your references properly.");
实际地说,正常的执行不能继续时,应该抛出一个异常,例如:
function doAdd(){
if(arguments.lengthError("Two number are required!");
}else{
return a+b;
}
}
结合try...catch捕获异常
try{
var result=doAdd(10);
}catch(oException){
alert(oException.message);
}
发表评论
-
il中间语言-张银-博客园
2012-01-20 11:34 899il中间语言-张银-博客园 2012年01月14日 一、 ... -
2011年安徽省公务员考试行测真题(3)
2012-01-20 11:34 6972011年安徽省公务员考试 ... -
数学 3,4
2012-01-20 11:34 760数学 3,4 17小时前 2012届同心圆梦专题卷数 ... -
2010-07-26
2012-01-19 16:25 6322010-07-26 2010年07月26日 最近不少网 ... -
Flash CS5 用户自定义Button组件
2012-01-19 16:25 1057Flash CS5 用户自定义Button组件 2010年1 ... -
相关推荐
2012-01-19 16:25 527相关推荐 2010年12月07日 因为矢量图的表现力毕 ... -
怎么将javascript异常信息输出
2012-01-19 16:25 722怎么将javascript异常信息 ... -
小学生评语
2012-01-17 06:09 607小学生评语 2011年01月18日 陈柳柳:想到你,浮现 ... -
也谈小学作文教学策略
2012-01-17 06:09 627也谈小学作文教学策略 2011年05月28日 也谈小学作 ... -
改革作文评估方法,解放小学语文教师
2012-01-17 06:09 624改革作文评估方法,解放小学语文教师 2010年07月13日 ... -
提高小学作文实效性的思考
2012-01-17 06:09 637提高小学作文实效性的思考 2010年11月17日 摘要: ... -
小学二年级操行评语1
2012-01-17 06:09 800小学二年级操行评语1 2 ... -
神马都是浮云
2012-01-16 04:50 558神马都是浮云 2011年02月20日 曾以为爱情最为坚定 ... -
神马都是浮云,但也要用心去活!
2012-01-16 04:50 572神马都是浮云,但也要用心去活! 2012年01月11日 ... -
神马爱情?全是浮云
2012-01-16 04:50 593神马爱情?全是浮云 2011年12月24日 神马爱情、你 ... -
神马爱上了浮云。
2012-01-16 04:50 613神马爱上了浮云。 2012 ... -
神马都是浮云
2012-01-16 04:50 566神马都是浮云 2012年01月14日 ...
相关推荐
- **避免在catch块中忽视异常**:捕获异常后最好进行适当的处理,例如记录日志、给出用户反馈或恢复程序状态。 - **finally块用于资源清理**:无论是否发生异常,finally块都会执行,适合用来关闭文件、释放内存等...
在许多语言中,如Java、C#和JavaScript,`try...catch` 结构用于捕获并处理可能出现的异常。然而,原生的Golang并没有直接提供`try...catch`这样的异常处理机制,但我们可以借鉴其他语言的思想,通过自定义的方式来...
在JavaScript编程中,`try-catch`语句是用于异常处理的关键结构,它允许程序员捕获并处理可能出现的错误。这个标题"js代码-封装try-catch函数,实现套用"意味着我们要探讨如何将`try-catch`逻辑封装到一个自定义函数...
`try-catch` 结构作为异常处理的核心机制,在各种编程语言中广泛采用,如 Java、C# 和 JavaScript 等。本文将深入探讨 `try-catch` 的基本概念、语法结构及其应用场景。 #### 一、`try-catch` 的基本概念 `try-...
catch块可以捕获异常对象,然后通过catch块内的代码来处理这个异常。 finally块:在try...catch结构后可以添加finally块,其包含的代码无论是否发生错误都将被执行。finally块常用于执行清理工作,比如关闭文件句柄...
Trycatch能够捕获这些异常,并将它们封装在一个可以被处理的对象中,使得异常处理不再局限于单个回调函数,而是扩展到了整个异步执行链。 ### 长堆栈跟踪 传统的JavaScript异常处理只能提供有限的调用堆栈信息,这...
为了提高代码的健壮性和可维护性,通常会使用try/catch语句来捕获并处理可能出现的异常。在本案例中,我们关注的是一个名为“async-catch-loader”的webpack loader,它旨在自动化这个过程,即在编译阶段自动为async...
JavaScript中的`try...catch`语句是用于处理程序运行时可能出现的错误的一种机制。它允许开发者在代码中捕获并处理异常,防止程序因未预期的错误而崩溃。以下是关于`try...catch`的一些关键知识点: 1. **基本结构*...
当 `await` 表达式后面的 Promise 被拒绝时,会抛出一个异常,此时需要使用 `try/catch` 块来捕获这个异常。 `async-try-catch` 库的核心功能就是扩展了传统的 `try/catch` 语句,使其在 `async` 函数中更加有效。...
然而,直接使用`await`时,如果Promise被拒绝(即发生错误),JavaScript会抛出一个未捕获的异常,这可能会导致程序中断。为了在不使用`try-catch`块的情况下优雅地处理这些错误,我们可以创建一个`await`包装器。...
安装 npm install tryjs -g 如果安装失败,请使用 sudo 使用 进入到想要执行的目录 执行 tryjs $ tryjs Usage Usage: tryjs [options] Options: -h, --help output usage information -V, --version output the ...
JavaScript中的异常处理机制是通过`try...catch...finally`语句来实现的,它允许开发者在代码中捕获并处理可能出现的错误。这个机制与Java类似,但有一些关键的差异。 首先,`throw`语句在JavaScript中可以抛出任何...
本文将深入探讨JavaScript中的异常处理机制,包括Error对象、自定义异常以及try...catch...finally语句的用法。 一、异常处理概念 在JavaScript运行时,如果发生如数组索引越界、类型不匹配或语法错误等错误,解释...
动机捕获 JavaScript 中抛出的所有异常。 在错误的来源处捕获错误。 能够在alpha 测试时记录错误并将错误发送到服务器。 受到和 node.js 的uncaughtException事件的。 确定 try/catch 块在不应该使用的地方使用。...
当在`try`块中的代码抛出异常时,`catch`块可以捕获并处理这个异常。例如,当我们知道某个API可能会抛出异常,如`localStorage.setItem`在超出存储限制或隐私浏览模式下,我们可以将其包裹在`try-catch`中,如下所示...
try...catch结构是JavaScript中处理异常的主要方式。try块内包含可能抛出异常的代码,而catch块用于处理try块中的异常。通过这种方式,程序即使遇到错误也能够继续运行,而不是直接崩溃。 try...catch语句的结构...
JavaScript中的异常处理主要通过`try-catch-finally`结构来实现。`try`块包含可能抛出异常的代码,如果在`try`块中出现错误,控制权会立即转移到与之对应的`catch`块。`catch`块用来捕获和处理异常,`finally`块则...