try,catch,finally和return执行顺序的知识点

   今天java学到try,catch,finally以及return的使用,刚开始模糊不清,后来也差不多清楚了,分享给大家,有什么问题谢谢指出。

   

    try-catch是java中用来捕获异常的方法,也就是帮我们找到代码中存在的异常,其格式如下:

  try{

  代码段1

     }

  catch{

  代码段2

     }

  代码段1是一段存在异常的代码,代码段2是处理代码段1异常的一些方法,当然可以有多个catch,表示同时提供多个处理代码段1异常的方法。(当代码段1没有异常的时候,try语句直接完成执行,不再执行catch语句)

try{

  代码段1

  return1代码段1如果

    }

   catch{

  代码段2

  return2

   }

  没有finally时,代码段1如果如果没有异常则仅仅执行代码段1,catch语句没有执行,结果是return1。

  

  接下来我们说重点,当有finally存在时,格式如下:

   try{

  代码段1

  return1

    }

   catch{

  代码段2

  return2

   }

  finally{

 代码段3

  return3

   }

 首先我们需要知道这段捕获异常的代码执行完毕后需要返回一个对应类型的数据类型。

则return关键字可能出现在return1,return2,return3 三处位置。

 try{

  代码段1

  return1 

}

 catch{

  代码段2

  return2

}

 finally{

 代码段3

  return3 

}

  代码段1如果没有异常则首先执行代码段1,然后直接执行finally中代码段3,随后执行此时可分为两种情况:

(1)return3位置如果存在return语句,则执行完代码段3后直接结果return3,执行完毕;

(2)return3位置如果不存在return语句,则执行完代码段3后跳回try语句中执行return1;

  代码段1存在异常,首先执行代码段1捕获异常,然后执行catch语句中代码段2,接着执行finally中代码段3,随后执行可分为两种情况:

(1)return3位置如果存在return语句,则执行完代码段3后直接结果return3,执行完毕;

(2)return3位置如果不存在return语句,则执行完代码段3后跳回catch语句中执行return2;

  综上所述,也就是说

如果存在finally那么finally必须被执行,

如果finally中有return语句,则返回值就是finally中的return值,

如果finally语句中没有return语句,则跳回上一个执行阶段,返回值就是上个执行阶段的return值。

时间: 2024-10-22 17:29:25

try,catch,finally和return执行顺序的知识点的相关文章

浅谈Java语言中try{}catch{}和finally{}的执行顺序问题

浅谈Java语言中try{}catch{}和finally{}的执行顺序问题 2019-04-06  PM  13:41:46  1. 不管有没有出现异常,finally块中代码都会执行: 2. 当try和catch中有return时,finally仍然会执行: 3. finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的:

finally return 执行顺序问题

网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的: (1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到. (2)在try块中有System.exit(0);这样的语句,System.exit(0);

java中try{}catch{}和finally{}的执行顺序问题

 今天我给大家讲解一下java的的错误和异常处理机制以及相关异常的执行顺序问题.如有不足的地方,欢迎批评指正~ 1.首相简单介绍一下java中的错误(Error)和异常(Exception) 错误和异常的介绍: 在java.lang软件包中有一个java.lang.Throwable类,这个类是java中所有错误和异常的超类. 在java中错误和异常的继承主要有两个: 分别为Error和Exception 这两个. Error:         是java中所有错误类的父类,就是jvm出现错误,

java中return与finally的执行顺序

网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的: (1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到. (2)在try块中有System.exit(0);这样的语句,System.exit(0);

try、catch、finally 执行顺序

在Java程序中,异常处理是重要技术,当处理块中包含return语句时, try.catch.finally的执行顺序如下: 1.无论是否出现异常,finally块中代码都会执行: 2.当try和catch中有return时,finally仍然会执行: 3.finally是在return语句执行之后,返回之前执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),所以函数返回值是在finally执行前就已经确定了:

Java finally语句与return语句执行顺序解析

网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的: (1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到. (2)在try块中有System.exit(0);这样的语句,System.exit(0);

当try和finally都包含return时的执行顺序

两段代码演示: public class Demo4 { public static void main(String[] args) { System.out.println(new Demo4().test()); } int test(){ int x=1; try { return x; } finally { ++x; } } } 这段代码执行后的结果是:1 个人理解:当执行try中的语句时,返回值x现在存储的值是1,紧接着执行finally代码块++x,那么现在x的值是2 那么问题来

sql关键字的解释执行顺序

sql关键字的解释执行顺序 分类: 笔试面试总结2013-03-17 14:49 1622人阅读 评论(1) 收藏 举报 SQL关键字顺序 表里面的字段名什么符号都不加,值的话一律加上单引号 有一次笔试考到了关于SQL关键字执行顺序的知识点. 我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员流动大,那么我么还能保证下一段时间系统还能流畅的运行吗?我么还能保证下一个人能看懂我么的存储过程吗?那么我结合公司平时

有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中的代码怎么