catch 和 finally 一起使用的常见方式是:在 try 块中获取并使用资源,在 catch 块中处理异常情况,并在 finally 块中释放资源。

finally 块用于清理try块分配的任何资源,无论try中是否异常或者终止(return),finally块都会执行。

如果在finally块中修改了返回值,会对最终返回的结果有何影响呢?

1,如果返回值是值类型

//finally执行,i值是2013,但是最终返回2015
static int test(){int i = 2016;try{i=2015;return i;}catch{//有异常才会到这里i=2014;               return i;}finally{i=2013;}}

2,返回string类型,是否会影响呢,答案是不会影响。

//finally块执行,s值是“tiger”,但是最终返回dog
static string test(){string s = "cat";try{s="dog";return s;}catch{

//有异常才会到这里
            s="duck";
             return s;

            }finally{s="tiger";}}

3,返回数组又会如何呢?

//finally块执行,影响了最终返回结果,返回{ "e", "b", "c" };
static string[] test(){string[] arr = { "a", "b", "c" };try{arr[0]="d";return arr;}catch{//有异常才会到这里arr[0]="f";               return arr;}finally{arr[0]="e";;}}

4,对象跟数组一样,finally修改对象后,最终返回的是finally修改后的对象。

注意:

1,finally块中不能有 return语句,当然vs会报错。

2,如果finally块之后还有return语句,该如何返回呢?即 try{ }catch(){} finally{} return x;

finally块肯定执行,这里主要看try和catch是否执行了return语句,如果执行了,finally块后面的语句就不执行了。

当然,如果try和catch块都含有return语句,那么肯定会执行其中一个,finally块后面的的语句就不会执行了,这是vs会提示“检测到无法访问的代码”,

示例

//返回“dog”,加入有异常会返回“duck”,
static string test(){string s = "cat";try{s="dog";return s;}catch{//有异常才会到这里s="duck";}finally{s="tiger";}return s;//假如try正确返回了,就不会执行。}

转载于:https://www.cnblogs.com/imust2008/p/5611916.html

try-catch-finally对返回值的影响相关推荐

  1. 字节码分析finally块对return返回值的影响

    直接进入主题.看如下代码: public int test(){int i=0;try {i=1;return i;} catch (Exception e) {i=2;return i;}final ...

  2. 关于finally对返回值的影响

    1.finally对返回值的影响 我们知道finally在try中return语句执行之后 返回之前 执行的. 如果try中最后return一个变量 ,那finally也对这个变量修改后 到底会返回什 ...

  3. 关于Mybatis的insert方法返回值(将返回值受影响条数改为插入后的自增主键id)

    今天做ssm项目的时候有一个这样的需求--我借阅一本书然后生成一条借阅记录(借阅记录的主键是递增的"borrowNum"),然后将这条记录的主键返回,在往上查阅资料后知道,只要在对 ...

  4. 细琢磨,try catch finally 执行顺序与返回值

    try catch finally 常见格式如下: try{//应用代码}catch(Exception e){//异常捕捉处理}finally{//资源释放.流关闭等等 } 通常执行顺序: try有 ...

  5. java方法带参数返回值_Java方法中的参数太多,第6部分:方法返回

    java方法带参数返回值 在当前的系列文章中,我正在致力于减少调用Java方法和构造函数所需的参数数量,到目前为止,我一直专注于直接影响参数本身的方法( 自定义类型 , 参数对象 , 构建器模式 , ...

  6. c# mysql executenonquery_C#中ExecuteNonQuery()返回值注意点分析

    本文实例讲述了C#中ExecuteNonQuery()返回值注意点.对于C#数据库程序设计有一定的借鉴价值.分享给大家供大家参考之用.具体分析如下: 首先,在查询某个表中是否有数据的时候,我们通常用E ...

  7. ExecuteNonQuery()返回值注意点

    查询某个表中是否有数据的时候,我用了ExecuteNonQuery(),并通过判断值是否大于0来判断数据的存在与否.结果与我所设想的很不一致,调试时才发现,其执行后返回的结果是-1,对此我很是不理解, ...

  8. java executenonquery_ExecuteNonQuery()返回值

    查询某个表中是否有数据的时候,我用了ExecuteNonQuery(),并通过判断值是否大于0来判断数据的存在与否.结果与我所设想的很不一致,调试时才发现,其执行后返回的结果是-1,对此我很是不理解, ...

  9. mysql executenonquery_ExecuteNonQuery()返回值注意点

    查询某个表中是否有数据的时候,我用了ExecuteNonQuery(),并通过判断值是否大于0来判断数据的存在与否.结果与我所设想的很不一致,调试时才发现,其执行后返回的结果是-1,对此我很是不理解, ...

最新文章

  1. c++引用的自我见解
  2. 033_jdbc-mysql数据库连接池
  3. 贪心算法之——阶乘之和(nyoj91)
  4. 通过扫码打开IOS的App Store下载APP(Android版暂时没找到解决方法)
  5. ggplot2绘图如何根据一个变量即区分颜色又区分深浅?
  6. 十 全局结果页面的配置
  7. Class.forName()、Class.forName().newInstance() 、New 三者区别!
  8. 数据分析对企业的重要性
  9. STM32开关总中断
  10. 检查库文件的rpath命令
  11. 零基础多久能学会python_零基础小白多久能学会python
  12. 2021-04-11
  13. 一大波能提高编程技能的游戏
  14. hdmi接口有什么用_VGA、DVI、HDMI三种视频信号接口有什么区别呢
  15. 手机编程html流星代码,如何使用html实现流星雨的效果(代码)
  16. uni-app第三方登录
  17. int const, const int *,int *const,int const *const 区别
  18. 7. Applepay 解码实操-golang
  19. ca45a_demo_c++_if语句
  20. JavaScript基础——使用Canvas画图

热门文章

  1. 2022-2028年中国内衣行业研究及前瞻分析报告
  2. java转python
  3. LeetCode简单题之K 进制表示下的各位数字总和
  4. LeetCode简单题之整数的各位积和之差
  5. 机器人导航两篇顶级会议论文解析
  6. 三维点云去噪无监督学习:ICCV2019论文分析
  7. 电脑总有安装计算机更新,为什么我们的电脑总会莫名的安装垃圾软件,看完吓一跳,欢迎关注...
  8. api.php t.cn,PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
  9. C++ list 的使用
  10. Execution failed for task ':app:mergeDebugResources'.