`
hackwaly
  • 浏览: 8444 次
  • 性别: 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的了.

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

分享到:
评论

相关推荐

    try-finally-throw-in-finally.rar_Called

    通过查看这些文件,开发者可以学习如何正确地处理异常,尤其是在涉及资源清理(如文件关闭或数据库连接释放)的场景下,`finally`块的作用显得尤为重要。 总的来说,理解和掌握`Date`构造函数的多模式使用以及异常...

    Java软件开发实战 Java基础与案例开发详解 10-5 finally关键字 共7页.pdf

    ### finally关键字的特殊性 需要注意的是,只有在Java虚拟机(JVM)被强制关闭的情况下,`finally`块才不会被执行。此外,无论`try`块是以何种方式结束(正常结束、异常结束、通过`return`或`break`等控制流语句结束...

    完全解析Java编程中finally语句的执行原理

    在Java编程中,`finally`语句块是一个关键的组成部分,尤其在异常处理中起到至关重要的作用。然而,关于`finally`的执行原理,并非所有程序员都对其有深入的理解。`finally`的主要功能是在程序执行过程中确保某些...

    Java中final,finally,finalize三个关键字的区别_动力节点Java学院整理

    finalize() 方法主要用途是回收特殊渠道申请的内存,例如 JNI(Java Native Interface)调用 non-Java 程序(C 或 C++)。 final 关键字用于限制变量、方法和类的修改和继承,finally 块用于异常处理中的清理操作,...

    简单介绍Python中的try和finally和with方法

    ##### 1.2 finally语句的作用 `finally`子句无论是否发生异常都会被执行。这意味着即使程序中出现了未捕获的异常导致程序崩溃,`finally`块中的代码也会被执行。这对于确保资源(如文件、网络连接等)能够正确关闭...

    java面试题解析困惑之一

    Java语言中的`final`、`finally`和`finalize`这三个关键字虽然在拼写上相似,但它们的作用却截然不同。在Java面试中,理解这三个概念的区别是非常基础且重要的。 首先,`final`是一个修饰符,它有以下几个用途: 1...

    Java关键字及其作用

    JAVA 关键字及其作用 Java 是一种面向对象的编程语言,其语法中包含了一系列的关键字,这些关键字在程序中有着特殊的意义,用于控制程序的行为和结构。了解并掌握这些关键字对于编写高质量的Java代码至关重要。 一...

    java 异常处理练习

    在这个“java 异常处理练习”中,我们将深入探讨`try-catch-finally`、`throw`和`throws`关键字的使用,以及它们在确保程序稳定性和可靠性中的作用。 1. **try-catch-finally**:这是Java异常处理的核心构造,用于...

    python练习题Question56.txt

    根据给定的文件信息,我们可以从标题、描述和部分内容中...以上就是根据给定文件信息提取的Python编程知识点,涵盖了异常处理机制、try/except结构的使用、自定义异常函数的编写、零除错误的处理和finally块的作用。

    2022年JAVA笔试题答案在最后.doc

    final、finally、finalize是Java中的三个关键字 memiliki不同的用途。 * final关键字用于修饰类、方法、变量,表示它们不能被继承、重写或修改。 * finally关键字用于异常处理,提供finally块来执行任何清除操作。 ...

    java面试题及答案

    `finally` 在异常处理中起到至关重要的作用。当一个`try-catch`块伴随着`finally`块时,无论是否发生异常,`finally`块中的代码都会被执行。这通常用于确保清理操作(如关闭文件流、网络连接等)总能得到执行,即使...

    变量和简单的数据类型

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

    java关键字.pdf

    Java关键字是Java语言中预先定义的、具有特殊意义的单词,它们在Java程序中有着特殊的用途,比如用来声明数据类型、定义流程控制语句等。根据提供的部分内容,可以将Java的关键字分类并阐述它们的作用。 1. 访问...

    浅谈Java自定义异常在教学中的教与学

    然而,在实际的软件开发过程中,可能会遇到一些特殊的错误情况,这些情况无法通过Java标准库中的异常类来准确描述,这时就需要开发者自行定义异常类来描述和处理这些特殊的错误情况,这便是自定义异常出现的原因。...

    MTK_SP_Drivers_v 2.0.rar

    MTK_SP_Drivers_v 2.0 是一个专门针对联发科(MediaTek)芯片组的特殊程序包,主要用于安装和更新适用于联发科设备的驱动程序。这个压缩文件包含了一系列驱动,使得用户能够在电脑上顺利识别和操作基于联发科处理器...

    C#的关键字大全

    C#的关键字大全 C#语言中,关键字是对编译器具有特殊意义的预定义保留标识符,这些关键字不能在...C#语言中的关键字是编译器识别的特殊标识符,它们具有特殊的意义和用途。在编程时,正确地使用关键字是非常重要的。

    Java常见的笔试面试题

    Java中的`final`, `finally`, `finalize` 是三个非常重要的关键字,它们在程序的不同方面起着关键作用。 1. `final` 关键字主要用于声明不可变性。如果一个类被声明为`final`,则该类不能有子类,这意味着它是最终...

    java期末考试简答题

    * 接口:使用 interface 关键字声明,表示是一种特殊的抽象类,包含常量和方法的定义,所有方法默认为 public。 事件监听器的主要功能: * 事件监听器:用于选择接收事件,将事件监听器添加到事件源中,一旦有事件...

    java笔试题及答案

    它的主要用途是在对象不再被引用时执行必要的清理工作。然而,这个方法并不推荐使用,因为它的行为是不确定的,并且现代垃圾回收器提供了更好的清理机制。需要注意的是,`finalize()`方法是由`Object`类定义的,因此...

Global site tag (gtag.js) - Google Analytics