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的了.
这也算是一个小小的缺点吧
分享到:
相关推荐
这些关键字包括数据类型关键字(如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...
该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。 一点背景:J2SE 5.0 为 Java 语言增加了几个新的特性,并且和它们一起增加了许多新的警告并承诺在将来增加更多的警告。您可以为...
10.3.11 try-except-else-finally:厨房一锅端 10.4 上下文管理 10.4.1 with语句 10.4.2 *上下文管理协议 10.5 *字符串作为异常 10.6 触发异常 10.7 断言 10.8 标准异常 ...
10.3.11 try-except-else-finally:厨房一锅端 10.4 上下文管理 10.4.1 with语句 10.4.2 *上下文管理协议 10.5 *字符串作为异常 10.6 触发异常 10.7 断言 10.8 标准异常 ...
10.3.11 try-except-else-finally:厨房一锅端 cccc10.4 上下文管理 10.4.1 with语句 10.4.2 上下文管理协议 10.5 字符串作为异常 10.6 触发异常 10.7 断言 10.8 标准异常 ...
10.3.11 try-except-else-finally:厨房一锅端 10.4 上下文管理 10.4.1 with语句 10.4.2 *上下文管理协议 10.5 *字符串作为异常 10.6 触发异常 10.7 断言 10.8 标准异常 ...
try 、finally 、catch 什么是 Error 内部类 创建内部类集合 Iterable 接口顶层接口 ArrayList Vector LinkedList 类Stack HashSet TreeSet LinkedHashSet 类 PriorityQueue HashMap TreeMap 类 LinkedHashMap 类 ...
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 创建独一无二的包...
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 创建...
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 创建独一无二的包...
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 创建独一无二的包...
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 创建独一无二的包...
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 创建独一无二的包...
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 创建独一无二的包...
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 创建独一无二的包...
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 创建独一无二的包...
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 创建独一无二的包...
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 创建独一无二的包...
50.JAVA语言如何进行异常处理,关键字:thorws,throw,try,catch,finally 51.Object类(或者其子类)的finalize()方法在什么情况下被调用? 52.一个“.java”原文件中是否可以包括多个类(不是内部类)? 53.掌握...