finally解析

news/2024/7/5 11:37:02 标签: 运维

为什么80%的码农都做不了架构师?>>>   hot3.png

问题:

        1.什么时候使用finally语句块???

        2.finally语句块在try或者catch语句中return返回之前还是之后执行???

        3.什么情况下finally语句块不执行???

解答:

        1.也就是finally的作用。finally是为异常处理事件提供的一种清理机制。一般使用场景,某些事物(除内存外)在异常处理之后需要恢复到原始状态,如关闭文件,释放系统资源等。

        2.1 finally语句块在是在try或者catch块中的return语句执行之后,返回之前执行。例如:

	private static int test1() {

		int i = 1;
		try {
			System.out.println("try...");
			return i += 10;
		} catch (Exception e) {
			System.out.println("catch...");
		} finally {
			i++;
			System.out.println("finally...");
			System.out.println("i=" + i);
		}
		return i;
	}

执行结果

try...
finally...
i=12
test1:11

        2.2 如果,finally块中也有return,则会覆盖try或者catch块中的return语句

        2.3 finally块中的修改语句可能影响也可能不影响try或者catch中return已经确定的返回值,如果返回值类型是传址类型,则影响;传值类型,则不影响;

        传值:8种基本数据类型及其包装类、字符常量

        传址:数组或者对象。

        例如:

private static Map<String, String> test() {

		Map<String, String> map = new HashMap<String, String>();
		map.put("KEY", "INIT");
		try {
			System.out.println("try...");
			map.put("KEY", "TRY");
			return map;
		} catch (Exception e) {
			System.out.println("catch...");
			map.put("KEY", "CATCH");
		} finally {
			System.out.println("finally...");
			map.put("KEY", "FINALLY");
			map = null;
		}
		return map;
	}

        结果:

try...
finally...
{KEY=FINALLY}

        3.除非在try块或者catch块中调用了退出虚拟机的方法(即System.exit(1);),否则不管在try块、catch块中执行怎样的代码,出现怎样的情况,异常处理的finally块总是会被执行的。 

转载于:https://my.oschina.net/riseee/blog/1620364


http://www.niftyadmin.cn/n/1120434.html

相关文章

OCP-1Z0-051 第159题 insert语句中使用子查询

一、原题 View the Exhibit and examine the structure of the CUSTOMERS table. NEW_CUSTOMERS is a new table with the columns CUST_ID, CUST_NAME and CUST_CITY that have the same data types and size as the corresponding columns in the CUSTOMERS table. Evaluat…

Mysql中的备份和恢复

生成SQL脚本 导出数据 在控制台使用mysqldump命令可以用来生成指定数据库的脚本文本&#xff0c;但要注意&#xff0c;脚本文本中只包含数据库的内容&#xff0c;没人不会创建数据库的语句&#xff01;所以在恢复数据时&#xff0c;还需要自己手动创建一个数据库之后再去恢复数…

通信--------多人在线

引用&#xff1a;http://www.cnblogs.com/not-code/archive/2011/07/16/2108369.html 扩展&#xff1a;UI设计技巧 http://www.cnblogs.com/not-code/category/291732.html XMPP协议简介 XMPP协议&#xff08;Extensible Messaging and PresenceProtocol&#xff0c;可扩展消息…

Android笔记——Button点击事件几种写法

Button点击事件&#xff1a;大概可以分为以下几种&#xff1a; 匿名内部类定义内部类&#xff0c;实现OnClickListener接口定义的构造方法用Activity实现OnClickListener接口指定Button的onClick的属性首先我们简单地定义一个带Button的xml布局文件 activity_main.xml: <But…

JAVA Web servlet

Servlet servlet是运行在服务端的java程序。是sun公司提供一套规范&#xff08;接口&#xff09; 他是用来处理客户端请求的&#xff0c;响应浏览器的动态资源他的本质就是Java代码 创建servlet 创建一个类&#xff0c;继承HttpServlet servlet配置 每创建一个servlet 就要配…

(二)springmvc+mybatis+dubbo+zookeeper分布式架构 整合 - 平台功能导图

构建dubbo分布式平台的技术选型、目标、特点、独立服务项目等&#xff0c;今天针对于独立服务项目提供平台功能导图&#xff0c;也是我们未来逐步研发的功能。 架构代码下载&#xff1a; 我这边不做多介绍&#xff0c;直接上图了&#xff1a;下面的章节中&#xff0c;我们会针对…

大数据全面应用打击线下线上假冒伪劣

浙江省工商局与阿里巴巴集团日前签订深化战略合作协议&#xff0c;通过对网络经营主体实现精准监管等举措&#xff0c;把打击线下线上假冒伪劣推进到大数据全面应用阶段。 通过“工商阿里大数据交互平台”&#xff0c;浙江工商部门对阿里平台上登记的浙江网店主体身份信息与工商…

悲观锁和乐观锁和gap锁

mysql说对数据加锁不管共享锁还是互斥锁就能解决幻读的问题悲观锁&#xff1a;读写的时候都加锁&#xff0c;读取数据时给加锁&#xff0c;其它事务无法修改这些数据。修改删除数据时也要加锁&#xff0c;其它事务无法读取这些数据&#xff0c;serializable串行化隔离级别乐观锁…