- 浏览: 482466 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (437)
- Windows设置 (2)
- oracle数据库 (39)
- bug--jsp (4)
- j2se (13)
- js (40)
- bug-tomcat不能启动程序 (1)
- Hibernate (29)
- eclipse (20)
- java (65)
- 设计模式 (6)
- bug (18)
- PL/SQL (11)
- 前台 (5)
- 杂谈 (25)
- UML (1)
- jdbc编程 (2)
- 技术调研 (1)
- 数据通信 (2)
- ios (1)
- servlet自学笔记 (10)
- tomcat (9)
- SQL学习笔记 (6)
- java工具 (1)
- 数据库设计 (4)
- javascript (10)
- jsp (11)
- struts (17)
- ajax (7)
- linix/Unix (6)
- 资源 (3)
- spring (14)
- 算法 (5)
- 计算机网络 (2)
- http (5)
- c++ (2)
- web应用 (3)
- jvm (5)
- java中的字符编码 (14)
- java代码库 (2)
- classloader (1)
- 读书笔记 (1)
- c (1)
- 开源软件 (1)
- svn (1)
- AOP (1)
- java序列化 (1)
- 多线程 (4)
- The legendary programmers (1)
- Apache http Server (1)
- html tag (3)
- struts1.X学习笔记 (5)
- buffalo (1)
- 自己收藏 (0)
- TOEFL(IBT) (1)
- 网络翻墙 (0)
- 编译原理 (1)
- 书籍推荐 (1)
- css (10)
- javaee环境搭建资料 (1)
- 开源工具 (1)
- 美国生活 (1)
- spring自学 (3)
- log4j (3)
- 算法与数据结构 (5)
- 病毒,插件处理大全 (1)
- flex (2)
- webservice (1)
- git (7)
- cs (1)
- html (4)
- javaee (6)
- 开车 (0)
- springmvc (3)
- 互联网架构 (2)
- intellij idea (18)
- maven (15)
- mongodb (2)
- nginx (1)
- react (3)
- java基础例子 (2)
- springboot (2)
- 培训 (5)
- mysql (3)
- 数据库 (3)
- 生活 (2)
- intellij (3)
- linux (2)
- os (3)
最新评论
-
潇洒天涯:
[color=blue][color=cyan] ...
oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 -
hekai1990:
受教了..
oracle中的varchar2
try-catch-finally与return的执行顺序
- 博客分类:
- j2se
写java程序经常碰到异常,try-catch-finally与return的执行顺序不是很清晰,总是调整到编译通过就放在那里了,没有细致的研究过,碰到的次数多了,很烦!
测试一下(一):只有try-catch return语句在try里面。javac Test.java编译时报错:缺少返回语句。
return语句放在catch后面,成功。
public class Test{
public static void main(String args[]){
System.out.println(a());
}
private static String a(){
try{
//throw new Exception();
System.out.println("In TRY");
return "返回值";
}catch(Exception e){
System.out.println("In Catch");
}
//finally{
//System.out.println("In FINALLY");
//return "返回值";
//}
//System.out.println("Afer finally In Return");
}
}
测试二:
public class Test{
public static void main(String args[]){
System.out.println(a());
}
private static String a(){
try{
//throw new Exception();
System.out.println("In TRY");
return "返回值";
}catch(Exception e){
System.out.println("In Catch");
}
finally{
System.out.println("In FINALLY");
}
//System.out.println("Afer finally In Return");
return "返回值";
}
}
结果:
In TRY
In FINALLY
返回值
测试(三):return在finally前面,编译报错finally不带有try块。
public class Test{
public static void main(String args[]){
System.out.println(a());
}
private static String a(){
try{
//throw new Exception();
System.out.println("In TRY");
return "返回值";
}catch(Exception e){
System.out.println("In Catch");
}
return "返回值";
finally{
System.out.println("In FINALLY");
}
//System.out.println("Afer finally In Return");
}
}
测试(四):返回值在finally块里面:
public class Test{
public static void main(String args[]){
System.out.println(a());
}
private static String a(){
try{
//throw new Exception();
System.out.println("In TRY");
return "返回值";
}catch(Exception e){
System.out.println("In Catch");
}
finally{
System.out.println("In FINALLY");
return "返回值";
}
//System.out.println("Afer finally In Return");
}
}
结果:与测试二一样。
测试(四):
public class Test{
public static void main(String args[]){
System.out.println(a());
}
private static String a(){
try{
//throw new Exception();
System.out.println("In TRY");
return "返回值";
}catch(Exception e){
System.out.println("In Catch");
}
System.out.println("Afer Catch before finally !");
finally{
System.out.println("In FINALLY");
return "返回值";
}
//System.out.println("Afer finally In Return");
}
}
结果:编译报错 finally不带有try。说明try-catch-finally必须连在一起中间不能有语句。
结论:try-catch-finally必须连在一起中间不能有语句。return语句只能放到finally块得后面或者是finally块里面的最后一句话。即程序的最后面。即try-(catch)-finally-return的顺序执行。
发表评论
-
【转】JAVA泛型通配符(PECS)
2018-07-29 10:43 481在JAVA的泛型集合中,默认都可以添加null,除此以外, ... -
Differences between notify() and notifyAll()
2018-07-16 09:01 481Notification to number of th ... -
【转】深度解析Java多线程的内存模型
2018-07-16 09:00 450https://www.jianshu.com/p/a3f ... -
【转】java rmi
2018-01-03 18:57 362此处讲的是Java中的RMI ... -
Java Annotation认知(包括框架图、详细介绍、示例说明)
2017-10-09 19:49 349摘要 Java Annotation是JDK5.0引入的 ... -
【转】web.xml 配置404和500错误的自定义页面
2016-01-03 15:16 1278web.xml Xml代码 &l ... -
关于java的binding
2013-06-16 22:51 627//file: MyMain.class class B ... -
【转】web.xml 中的listener、 filter、servlet 加载顺序及其详解
2012-08-23 11:09 757在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过 ... -
【转】web.xml中listener的作用及使用(转)
2012-08-23 11:07 819概述: Servlet监听器用于监听一些重要事件的发生, ... -
html中get和post的区别
2012-06-06 09:48 9541. get是从服务器上获取数据,post是向服务器传送数据。 ... -
【转】Request的getParameter和getAttribute方法的区别
2012-05-29 15:42 821HttpServletRequest.getParameter ... -
【转】Java程序员的良药:应用程序的开发技巧
2012-05-11 18:04 716【IT168 技术】 假如你是一名Java开发者,正在开发 ...
相关推荐
The production IfStatement : if ( Expression ) Statement else Statement is evaluated as follows:.
try-catch-finally执行顺序验证(左边是.java文件,右边是.class文件) 提示: try、catch块内的return操作编译后会变成把return的值保存到变量var的操作。 总结: try、catch块内的return操作编译后会变成把return的值...
try、catch、finally、return 执行顺序超详细讲解,包看包会。
第一:return语句并不是函数的终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回) 第二:finally里面不建议放return语句,根据需要,return语句...
我们知道return语句用在某一个方法中,一是用于返回函数的执行结果,二是用于返回值为void类型的函数中,仅仅是一个return语句(return ;),此时用于结束方法的执行,也即此return后的语句将不会被执行,当然,这种...
Condition 3: try中有异常,try-catch-finally里都没有return ,finally 之后有个returntry中有异常以后,根据
在Java的异常机制中,如果finally中含有return语句,则try和catch中的return语句将会被JVM忽视
- 无论try是否发生异常,finally语句都会执行- 如果try/catch中包含控制转移语句(return、continue、break),finally
首先执行try,如果有异常执行catch,无论如何都会执行finally,当有return以后,函数就会把这个数据存储在某个位置,然后告诉主函数,我不执行了,接下来你执行吧,所以函数就会推出
03 try-catch优化为try-catch-finally简化 04 辅助功能-return简写表达式还原,便于阅读理解 05 新增:大数组多解密函数(需要先自行排版,大数组-偏移函数-解密函数1-解密函数2-解密函数3) 06 修复bug-未修改常量...
catch - 3 - char - 4 - class - 4 - continue - 5 - default - 5 - do - 6 - double - 6 - else - 6 - extends - 6 - false - 7 - final - 7 - finally - 7 - float - 8 - for - 8 - if - 8 - implements - 9 - ...
8. try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗? 9. 类 ExampleA 继承 Exception,类 ExampleB 继承ExampleA。 10. 常见的 RuntimeException 有哪些? 11. Java常见异常有哪些 四、并发...
Java finally语句到底是在return之前还是之后执行?Java finally执行深度剖析,具体看这篇博文:http://blog.csdn.net/lanxuezaipiao/article/details/16922895,这是里面相关的源码,欢迎大家下载使用。
3. 但是如果有 finally块的话,那么,finally 几乎是必定会执行的,但是这里有一个先后顺序的问题,应该是 finally 块和 打印异常堆栈将会在另外一个线程之中执行,所以 打印的顺序就很有意思了。 4. 如果在try或者...
finally 一定会被执行,如果 finally 里有 return 语句,则覆盖 try/catch 里的 return , 比较爱考的是 finally 里没有 return 语句,这时虽然 finally 里对 return 的值进行了修改,但 return 的值并不改变这种...
主要介绍了关于java中的一道面试题,这套题就是在try中含return语句时代码的执行顺序,这个问题看似简单,却暗藏杀机啊!文中通过一个个例子详细介绍了其中玄机,需要的朋友可以参考学习,下面来一起看看吧。
在一个try………end try 过程中可以使用catch与finally两个中的一 个,或者两个一起用, 二:Protected, private, Public 封装控制 这三个关键字一般放在语句最前面,而会置于overloads与Overrides的 后面...
yield不能单独放在try-catch块中,如果try中有yield那么,这个try块后面不许跟着finally块;也不能出现在匿名方法中,所以,看起来yield似乎并不常用,但是也不是不用。我前面有一个关于迭代器的例子《C#中的迭代器...
} finally { try { is.close(); } catch (Exception e) { } } url = infos.getProperty(URL); } public static Connection getConnection() { try { return DriverManager.getConnection...
@SuppressWarnings(finally) static int compute (){ Exc e = new Exc(); e.a = 10; e.b = 10; int res = 0 ; try{ res = e.a / e.b; System.out.println(try ……); return res + 1; }catch...