try catch 与 return 和 finally 关系。

例如,我打开了一个不存在的文件
import java.io.*;
public class Demo {
     public static void main(String[] args) {
           try
         {
                       FileReader fr=new FileReader("d:\\aa.txt");
         }
         catch(Exception e)
         {
             e.printStackTrace();
         }

System.out.println("11");
     }
}
我自己试过,后面的11会打印出来,但我看视频时老师说异常后面的语句不会执行,所以想知道下具体的解答。

答:

1.try
          {
                      
          }
          catch(Exception e)
          {

}

你的 11已经超出 异常捕抓呀。 你有异常处理要终止程序应该在 catch 里。

如果try块中的语句被后面的catch块捕获并处理了,那么try,,catch后面的语句就还会运行的,如果不被捕获,那后面的就不能运行。

问题2:finally在return前执行还是return后?、

答: finally和return完全是独立执行了! 虽然finally先于return执行,不过finally无论如何都无法修改return的结果。

这就是为什么,一个方法最好只做一件事,而且尽量不能有多个返回值。(坑很深,切勿一个方法多个return!)。

时间: 2024-10-12 16:11:14

try catch 与 return 和 finally 关系。的相关文章

(总结)try{}catch{}中有return,finally{}的执行情况

总结: 1.不管程序有没有bug,也不管try{}catch{}中有没有return语句,finally{}中的代码都会执行(记住这点). 2.先看例子...... 看下面的代码: class Program { static void Main(string[] args) { int x = 0; x = GetValue(); Console.WriteLine(" x的值为:" + x); Console.ReadKey(); } public static int GetVa

Java_try,catch,finally return之间的执行顺序

以往认为函数只要执行到return语句便会返回结果并终止,然而这时错误的,因为这存在特例. 掌握下面几条原则就可以完全解决“当try.catch.finally遭遇return”的问题. 原则:1.finally语句块中的代码是一定会执行的,而catch块中的代码只有发生异常时才会执行. 2. 函数执行完try块中的return语句后不会终止,还会继续执行catch(仅在抛出异常时执行).finally语句块. 3.函数必须确保有唯一返回值 说明: try中如果包含return语句则catch块

try catch finally return运行顺序

首先让我们搞懂两组概念:try catch finally和return 1.try catch finally 首先说try catch, (1)try语句 ,try语句用来包围可能出现异常的代码片段. try是发现问题的语句,发现异常后会跳入到catch{}中,如下: try{ 可能出现异常的代码片段 } (2)catch语句 ,catch语句是用来捕获try语句中出现的异常,并针对该异常解决的.catch语句块可以出现多次. catch(Exception_Type e){ 解决问题的代码

try-catch-finally 中哪个部分可以省略?try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?

try-catch-finally 中哪个部分可以省略? finally这部分可以省略 try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗? 会执行 1.不管有没有异常,finally中的代码都会执行2.当try.catch中有return时,finally中的代码依然会继续执行3.finally是在return后面的表达式运算之后执行的,此时并没有返回运算之后的值,而是把值保存起来,不管finally对该值做任何的改变,返回的值都不会改变

转:Java中finally和return的执行关系

finally可以分两方面理解 1.执行时机问题.finally总会执行(除非是System.exit()),正常情况下在try后执行,抛异常时在catche后面执行 2.返回值问题.可以认为try(或者catch)中的return语句的返回值放入线程栈的顶部:如果返回值是基本类型则顶部存放的就是值,如果返回值是引用类型,则顶部存放的是引用.finally中的return语句可以修改引用所对应的对象,无法修改基本类型.但不管是基本类型还是引用类型,都可以被finally返回的“具体值”具体值覆盖

try catch finally return

结论:任何执行try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话. 如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的, 编译器把finally中的return实现为一个warning. 但是需要注意的是,经过测试表明:在try 或者catch中的return语句,如果return的是int.long.double常量类型以及String.Integer等的封装类型,那

finally与return之间的关系

定论 问:finally语句一定会执行吗? 答: 1.如果没有执行相应的try语句则不会执行. 2.在try语句中如果调用System.exit(0)方法则不会执行. 问:finally会在什么时候执行? 答:如果在try/catch语句中调用转移指令例如:return,break,continue,throw等.则会在转移指令前执行. 总结 如果在finally中含有return语句,那么try/catch语句的return还有作用吗? 先看一段代码: /**  * Created by ga

JAVA小知识点-Finally和Return的执行关系

如果Try和Catch中存在return语句的时候Finally内的语句是否会执行,执行的时候对结果又有什么影响呢?我写了个例子来试验这个问题: public static Map<String, String> getMapTry() { Map<String, String> map = new HashMap<String, String>(); map.put("KEY", "INIT"); try { map.put(&

有return的情况下try catch finally的执行顺序

http://www.cnblogs.com/lanxuezaipiao/p/3440471.html?cm_mc_uid=89442383850615035911861&cm_mc_sid_50200000=1505491196 1.不管有木有出现异常,finally块中代码都会执行:2.当try和catch中有return时,finally仍然会执行:3.finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么