`
hackwaly
  • 浏览: 8176 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

finally的特殊用途

 
阅读更多

finally允许你定义一个finally_block

若try_block被执行则这个finally_block必定被执行,即使try_block中发生了跳转或者异常(它会在跳转或异常前执行)

 

function test(){
	for (var i = 0; i < 3; i++) {
		try {
			if (i == 1){
				break;
			}
		}
		finally {
			alert(i);
		}
	}
}
test();

 这个特性很重要,它允许我们做某些事情

 

比如触发事件的时候,我们需要挨个触发绑定在事件上的监听器函数.

但是如果其中某个函数需要抛出异常呢?

这样我们的触发过程就会被打断.这是我们不愿意看到的.

我们可以把触发函数放在try_block中, 把继续触发放在finally中, 这样就可以既抛出异常,又不打断我们的触发过程.

代码类似这样

 

var listeners = [function (){
		throw new Error('exception in event listener.');
	}, function (){
		alert('1');
	}];
function disp(){
	for (var i = 0; i < listeners.length; i++) {
		try {
			listeners[i]();
		} finally {
			continue;
		}
	}
}
disp();

 不过使用finally控制了异常的流程, 所以在disp()外面加上try catch也是无法捕获到那个Error的了.

这也算是一个小小的缺点吧

分享到:
评论

相关推荐

    46个java关键字介绍和使用大全含示例(值得珍藏)

    这些关键字包括数据类型关键字(如int、float、char等)、流程控制关键字(如if、else、while等)、访问控制关键字(如public、private、protected等)、异常处理关键字(如try、catch、finally等)以及其他一些特殊...

    变量和简单的数据类型

    • 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词。 • Python关键字 false class finally is return none continue for lambda try true def from nonlocal while and del global...

    @SuppressWarnings

    该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。 一点背景:J2SE 5.0 为 Java 语言增加了几个新的特性,并且和它们一起增加了许多新的警告并承诺在将来增加更多的警告。您可以为...

    Python核心编程(第二版).pdf (压缩包分2部分,第二部分)

     10.3.11 try-except-else-finally:厨房一锅端  10.4 上下文管理   10.4.1 with语句   10.4.2 *上下文管理协议   10.5 *字符串作为异常   10.6 触发异常   10.7 断言   10.8 标准异常   ...

    Python核心编程(第二版).pdf (压缩包分2部分,第一部分)

     10.3.11 try-except-else-finally:厨房一锅端  10.4 上下文管理   10.4.1 with语句   10.4.2 *上下文管理协议   10.5 *字符串作为异常   10.6 触发异常   10.7 断言   10.8 标准异常   ...

    Python核心编程第二版(ok)

     10.3.11 try-except-else-finally:厨房一锅端  cccc10.4 上下文管理   10.4.1 with语句   10.4.2 上下文管理协议   10.5 字符串作为异常   10.6 触发异常   10.7 断言   10.8 标准异常   ...

    Python核心编程第二版

     10.3.11 try-except-else-finally:厨房一锅端  10.4 上下文管理   10.4.1 with语句   10.4.2 *上下文管理协议   10.5 *字符串作为异常   10.6 触发异常   10.7 断言   10.8 标准异常   ...

    Java 基础核心总结 +经典算法大全.rar

    try 、finally 、catch 什么是 Error 内部类 创建内部类集合 Iterable 接口顶层接口 ArrayList Vector LinkedList 类Stack HashSet TreeSet LinkedHashSet 类 PriorityQueue HashMap TreeMap 类 LinkedHashMap 类 ...

    Thinking in Java 中文第四版+习题答案

    4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包...

    Think in Java(中文版)chm格式

    4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建...

    Java初学者入门教学

    4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包...

    JAVA_Thinking in Java

    4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包...

    ThinkInJava

    4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包...

    java 编程入门思考

    4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包...

    thinkinjava

    4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包...

    Thinking in Java简体中文(全)

    4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包...

    java联想(中文)

    4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包...

    Thinking in Java(中文版 由yyc,spirit整理).chm

    4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包...

    JAVA面试题最全集

    50.JAVA语言如何进行异常处理,关键字:thorws,throw,try,catch,finally 51.Object类(或者其子类)的finalize()方法在什么情况下被调用? 52.一个“.java”原文件中是否可以包括多个类(不是内部类)? 53.掌握...

Global site tag (gtag.js) - Google Analytics