Java中的try、catch、finally块简单的解析
package com.wangzhu; import java.util.HashMap;
import java.util.Map; /**
* 在try、catch、finally块中,若try中有return语句,则返回try中变量的值,<br/>
* 不管try块外是否对该变量进行了修改, 都不影响try中return的返回值。<br/>
* 若finally中有return语句,则忽略try、catch块中的return语句。<br/>
* 若finally中抛出异常,则整个try-catch-finally块中抛出异常。<br/>
*
* 注意:<br/>
* 尽量在try或者catch中使用return语句,通过finally快中达到对try或者catch返回值的修改是不可行的。<br/>
* finally块中避免使用return语句,因为finally快中如果使用return语句,<br/>
* 会显示的消化掉try、catch块中的异常信息, 屏蔽了错误的发生。<br/>
* finally块中皮面再次抛出异常,否则整个try-catch-finally块的方法抛出异常,并会消化掉try、catch块中的异常。<br/>
*
* @author wangzhu2014-7-20下午8:48:43
*
*/
public class CatchDemo1 {
/**
* 返回:try
*
* @return
*/
public static String test() {
String str = "";
try {
str = "try";
return str;
} catch (Exception e) {
str = "catch";
return str;
} finally {
str = "finally";
}
} /**
* 返回:finally
*
* @return
*/
public static String test1() {
String str = "";
try {
str = "try";
return str;
} catch (Exception e) {
str = "catch";
return str;
} finally {
str = "finally";
return str;
}
} /**
* 返回:catch
*
* @return
*/
public static String test2() {
String str = "";
try {
str = "try";
Integer.parseInt(null);
return str;
} catch (Exception e) {
str = "catch";
return str;
} finally {
str = "finally";
}
} /**
* 返回:finally
*
* @return
*/
public static String test3() {
String str = "";
try {
str = "try";
Integer.parseInt(null);
} catch (Exception e) {
str = "catch";
return str;
} finally {
str = "finally";
return str;
}
} /**
* 返回:finally
*
* @return
*/
public static String test4() {
String str = "";
try {
str = "try";
Integer.parseInt(null);
return str;
} catch (Exception e) {
str = "catch";
Integer.parseInt(null);
return str;
} finally {
str = "finally";
// 若去掉return语句则最后会报异常
return str;
}
} /**
* 返回:finally
*
* @return
*/
public static String test5() {
String str = "";
try {
str = "try";
Integer.parseInt(null);
return str;
} catch (NullPointerException e) {
str = "catch";
return str;
} finally {
str = "finally";
// 若去掉return语句则最后会报异常
return str;
}
} public static String test6(Map<String, Object> map) {
String str = "";
try {
str = "try";
map.put(str, str);
Integer.parseInt(null);
return str;
} catch (NullPointerException e) {
str = "catch";
map.put(str, str);
return str;
} finally {
str = "finally";
map.put(str, str);
// 若去掉return语句则最后会报异常
return str;
}
} public static void main(String[] args) {
System.out.println("try: " + CatchDemo1.test());
System.out.println("finally: " + CatchDemo1.test1());
System.out.println("catch: " + CatchDemo1.test2());
System.out.println("finally: " + CatchDemo1.test3());
System.out.println("finally: " + CatchDemo1.test4());
System.out.println("finally: " + CatchDemo1.test5());
Map<String, Object> map = new HashMap<String, Object>();
System.out.println("finally: " + CatchDemo1.test6(map));
for (String key : map.keySet()) {
System.out.println(key + "===" + map.get(key));
}
}
}
Java中的try、catch、finally块简单的解析的更多相关文章
- 在java中的Try Catch块-------------异常处理(2)
1. Try块是什么? Try块是一块可能产生异常的代码块,一个Try块可能跟着Catch块或者Finally块,或者两者. Try块的语义: try{ //statements that may c ...
- Java 中 try、catch、finally 语句块的执行顺序
假设代码顺序书写如下:try → catch → finally → 其他代码 则: 1.正常执行顺序:try → catch → finally → 其他代码 2.try,catch和finally ...
- [转载]java中try 与catch的使用
留着以后看 原文地址:与catch的使用">java中try 与catch的使用作者:碌碌如玉 try{ //代码区 }catch(Exception e){ //异常处理 } 代码区 ...
- 【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析
这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try { //需要被检测的异常代码 } catch(Exception e) { //异常处 ...
- 用好Java中的枚举真的没有那么简单
1.概览 在本文中,我们将看到什么是 Java 枚举,它们解决了哪些问题以及如何在实践中使用 Java 枚举实现一些设计模式. enum关键字在 java5 中引入,表示一种特殊类型的类,其总是继承j ...
- java中try 与catch的使用
(2011-10-08 17:08:43) 转载▼ 标签: 杂谈 分类: Java try{//代码区}catch(Exception e){//异常处理}代码区如果有错误,就会返回所写异常的处理. ...
- java中的synchronized同步代码块和同步方法的区别
下面这两段代码有什么区别? //下列两个方法有什么区别 public synchronized void method1(){} public void method2(){ synchronized ...
- 你真的理解Java中的try/catch/finally吗?
看几个例子,回顾一下执行顺序 例子1 无异常,finally中的return会导致提前返回 public static String test() { try { System.o ...
- Java中的服务器与客户端的简单连接
Java中重点之一就是服务器与客户端的连接,因为是在同一台PC上,所以就设置服务器的地址为“localhost”,注意,我当时试着设置其他名称,但都不行,这个原因还请老司机告一下.另外还要注意,服务端 ...
- 有关java中的try{}catch(){}的讲解
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_38225558/article/d ...
随机推荐
- 手机看youtube的方法|一个好用的VPN
俗话说:网络无国界.但是由于天朝的限制,我们无法访问YouTube .谷歌.twitter等一些国外网站. 这个时候我们就需要FQ.最直接有效的方法就是:VPN(虚拟专用网络). 虚拟专用网络的功能是 ...
- (转)使用Aspose.Cell控件实现Excel高难度报表的生成(一)
本文章主要介绍报表的生成,基于Aspose.Cell控件的报表生成.谈到报表,估计大家都有所领悟以及个人的理解,总的来说,一般的报表生成,基本上是基于以下几种方式:一种是基于微软Excel内置的引擎来 ...
- (转)Mysql数据库读写分离配置
环境模拟 实现读写分离 减轻数据库的负荷 主服务器 master 10.0.0.12从服务器 slave 10.0.0.66 ------------------------------------- ...
- Python快速入门学习笔记(三)——函数的定义与调用
定义函数 Python中定义函数的格式为: def fun([参数列表]): ... 函数在执行到return语句时结束,并将结果返回.如果没有return语句,函数执行完毕后返回None. 例: d ...
- XML美化工具及其他各种美化工具
在线工具 http://www.ostools.net/codeformat/xml 3464网页常用工具 http://www.3464.com/Tools/CodeFormat/ 在线工具大全 h ...
- IE6/IE7中li底部4px的Bug
当li的子元素中有浮动(float)时,IE6/IE7中<li>元素的下面会产生4px空隙的bug. XHTML <ul class="list"> < ...
- CSS实现不固定宽度和高度的自动居中
有时候我们需要实现下面这种效果: 嘎嘎,撑大高度不让你剧中 嘎嘎,撑大高度不让你剧中 嘎嘎,撑大高度不让你剧中 嘎嘎,撑大高度不让你剧中 嘎嘎,撑大高度不让你剧中 嘎嘎,撑大高度不让你剧中 嘎嘎,撑大 ...
- ecshop订单中配送方式报错
警告内容:Warning: number_format() expects parameter 1 to be double, string given in D:\wamp\www\ecshop_o ...
- fedroa 更换字体
1. 添加RPM包: rpm -Uvh http://www.infinality.net/fedora/linux/infinality-repo-1.0-1.noarch.rpm 2. 安装包 y ...
- Hive[5] HiveQL 数据操作
5.1 向管理表中装载数据 Hive 没有行级别的数据插入更新和删除操作,那么往表中装载数据的唯一途径就是使用一种“大量”的数据装载操作,或者通过其他方式仅仅将文件写入到正确的目录下: LOA ...