一直以为finally是在一个try-catch块中,不管里面有没抛异常,
最终都会去执行的一个块,比如
public void testFinallyMethod(){
try{
System.out.println(">>>do something<<<");
System.out.println(">>>do other thing<<<");
}catch (Exception e){
}finally{
System.out.println(">>>always do something<<<");
}
}
然而今天同事有个需求,就是在try块中return/break/continue
那么finally块是否会继续执行呢?
答案是肯定的.
public void testFinallyMethod(){
try{
System.out.println(">>>do something<<<");
return;//break,continue 也一样,当然这2种需要在循环中
System.out.println(">>>do other thing<<<");
}catch (Exception e){
}finally{
System.out.println(">>>always do something<<<");
}
}
运行后的结果是
>>>do something<<<
>>>always do something<<<
分享到:
相关推荐
- 断言默认是禁用的,需要明确启用才能生效。 #### 六、GC是什么?为什么需要GC? - **GC(Garbage Collection)**:垃圾收集机制,自动管理内存,自动检测并释放不再使用的对象所占用的内存空间。 - **原因**: ...
同步块的锁作用范围更小,只对块内的代码生效,从而减少死锁的风险。同步方法则会锁定整个方法,可能导致更大的锁粒度和潜在的性能影响。 4. **关键字`transient`**: `transient`关键字用于标记成员变量,表示该...
request对象用于获取请求参数,response对象用于设置响应头和输出内容,session用于存储会话数据,application对象代表全局应用范围内的数据。 4. **数据库优化**:常见的数据库优化方法包括创建合适的索引以加快...
- 访问`NSArray`之外的数据范围。 - 对象上调用未定义的方法。 为了处理这些问题,文件中提供了异常抛出和捕获的基本语法示例: ```objective-c // 抛出异常 [NSException raise:@"Error" format:@"This is broken...
- **LazyWrite属性**:控制写入操作是否立即生效。默认为`true`,意味着改动将在`CloseKey()`调用后才写入注册表,这有助于提升性能。如果希望立即更新注册表,应先将此属性设为`false`。 - **CreateKey函数**:...
上述代码中的`with`语句确保了游标在退出范围时会被关闭,即使在处理数据过程中出现异常,`finally`块的清理操作也不会被执行。 综合来看,选择哪种解决方案取决于具体场景。对于大型数据集,可能需要结合减小批量...
解决方法是将系统的日期设置到一个较早的时间点,使试用期重新生效。 3. **数据库卸载**: 若数据库无法正常启动,应避免直接通过控制面板卸载,而是应该通过重新运行安装程序并选择卸载选项来进行。 4. **超级管理员...
4. **TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRED**:使用了注解限制的值,但限制从未生效。检查注解的使用是否正确,确保类型约束实际需要。 5. **TLW_TWO_LOCK_WAIT**:等待两个已持有的锁,这是一个多线程错误。...
- **documentation**:文档,提供关于软件使用的详细信息。 - **associate**:关联,将文件类型与特定的应用程序绑定。 - **shortcuts**:快捷方式,提高工作效率的技巧。 - **setup**:安装过程,设置新软件的过程...
- **解释**: 计算32位随机整数的绝对值时,可能会遇到溢出问题,因为负数的绝对值可能是正的最大值加一,超出范围。 - **建议**: 使用适当的方法来避免溢出,例如,生成非负随机数或使用64位整数。 #### rule....
通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。 21、heap和stack有什么区别。 栈是一种线形集合,其添加和删除元素的操作应在同一段...