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

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

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

1,如果返回值是值类型

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

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[]="d";
return arr;
}
catch
{
//有异常才会到这里
arr[0]="f";
return arr;
}
finally
{
arr[]="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正确返回了,就不会执行。
}

最新文章

  1. [HDU 3689]Infinite monkey theorem (KMP+概率DP)
  2. 文件处理函数fopen、fread、fseek、fclose的使用实例介绍
  3. Project Euler 106:Special subset sums: meta-testing 特殊的子集和:元检验
  4. ie6/7/8中span右浮动折行问题的解决方案
  5. BZOJ3390: [Usaco2004 Dec]Bad Cowtractors牛的报复
  6. Mysql自动填充测试数据
  7. oracle之备份详解
  8. 让你用sublime写出最完美的python代码--windows环境
  9. iBatis基础知识
  10. nyoj VF
  11. SpringBoot+ Mybatis 搭建
  12. [Swift]LeetCode90. 子集 II | Subsets II
  13. String:字符串常量池
  14. Android NDK开发调试
  15. oracle 如何查询/修改dmp文件的字符集
  16. python中的风险
  17. javase高级技术 - 反射
  18. scala中的一些特殊符号的意义
  19. 将Unity导出的Eclipse工程转换为AndroidStudio工程
  20. seekg()/seekp()与tellg()/tellp()的用法详解

热门文章

  1. envoy 测试试用
  2. docker 命令记录
  3. ①HttpURLConnection通过报文提交
  4. RMAN 增量备份 脚本
  5. javabrideg的使用实践
  6. Linux C程序操作Mysql 调用PHP采集淘宝商品
  7. java代码实现鼠标双击出现画图-----------paint()方法由系统自动调用,且一定是小写的字母p
  8. java代码,输入n多个数,求其平均值,虽有重复,但是第二次,我就乱写了
  9. php数组指定字段排序
  10. oracle 11g r2 rac到单实例的dg