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正确返回了,就不会执行。
}

try-catch-finally对返回值的影响的更多相关文章

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

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

  2. Go 初体验 - 令人惊叹的语法 - defer.4 - defer 对宿主函数返回值的影响

    defer 函数可以影响宿主函数的返回值 看代码: 调用: 输出: 结果又让人意外了. coo1:因为传引用,return 时 i = 100, return 返回的也是 100,return 执行之 ...

  3. ThinkPHP中数据库操作返回值总结

    转自:http://www.baiwar.com/post/thinkphp-database-operations-in-the-return-value.html Thinkphp中的Think\ ...

  4. ExecuteNonQuery()返回值

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

  5. 【转】ThinkPHP中数据库操作返回值总结

    Thinkphp中的Think\Model类提供了数据库的基本CURD(Create.Update.Read及Delete),通过该类可以很便捷的进行操作.Model类及扩展类主要的方法有: Crea ...

  6. mybatis 中的 update 返回值

    摘自:https://www.jianshu.com/p/80270b93082a 如果定义一个如下的update函数,那么这个函数的返回值到底是啥意思呢?是受影响的行数吗? 验证之前我们先看看数据库 ...

  7. js onclick="return test()"事件返回值,对有些事件,会影响默认动作的执行。如:onclick和onsubmit

    onclick="return test()"事件返回值,对有些事件,会影响默认动作的执行.如:onclick和onsubmit <body> <!--事件返回值 ...

  8. EF5中 执行 sql语句使用Database.ExecuteSqlCommand 返回影响的行数 ; EF5执行sql查询语句 Database.SqlQuery 带返回值

    一: 执行sql语句,返回受影响的行数 在mysql里面,如果没有影响,那么返回行数为  -1 ,sqlserver 里面  还没有测试过 using (var ctx = new MyDbConte ...

  9. spring aop影响dubbo返回值问题解决

    问题描述: dubbo服务已经注册,客户端调用提供者服务返回值为空.(考虑动态代理.aop的返回值影响,dubbo基于spring2.5.6.SEC03,本次开发使用的是spring4.3.8) 解决 ...

随机推荐

  1. 学习动态性能表(5)--v$session

    学习动态性能表 第五篇--V$SESSION  2007.5.29 在本视图中,每一个连接到数据库实例中的session都拥有一条记录.包括用户session及后台进程如DBWR,LGWR,arcch ...

  2. bzoj 2555 SubString——后缀自动机+LCT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2555 要维护 right 集合的大小.因为 fa 会变,且 fa 构成一棵树,所以考虑用 L ...

  3. ubuntu 设置固定DNS

    1.打开 xxx@ubuntu:~$ sudo vim /etc/resolvconf/resolv.conf.d/base 2.输入以下DNS,保存退出. nameserver 8.8.8.8 na ...

  4. mysql + keepalived架构

    mysql + keepalived架构 文档(这个文章共有三篇): http://blog.itpub.net/27000195/viewspace-1364706/

  5. python urllib和urllib3包

    urllib.request urllib当中使用最多的模块,涉及请求,响应,浏览器模拟,代理,cookie等功能. 1. 快速请求 urlopen返回对象提供一些基本方法: read 返回文本数据 ...

  6. GOF23设计模式之建造者模式(builder)

    一.建造者模式概述 建造者模式的本质: 1.分离了对象子组件的单独构造(由Builder负责)和装配(由Director负责).从而可以构造出复杂的对象.这个模式适用于:某个对象的过程复杂的情况下使用 ...

  7. jQuery选择器this通过onclick传入方法以及Jquery中的this与$(this)初探,this传处变量等

    起初以为this和$(this)就是一模子刻出来.但是我在阅读时,和coding时发现,总不是一回事. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

  8. 【转】Jmeter 代理服务器录制脚本

    因为Badboy只支持IE浏览器,现在又不得不到到fireFox上录制脚本才能完成,再次重温下Jmeter自带的Http代理服务器,当然比起badboy,它稍稍麻烦点. 1  配置很简单 工作台--& ...

  9. java代码----equals和==区别

    总结: ==的意义在于比较的是整型 package com.aa; // public class Bd { public static void main(String[] args) { Inte ...

  10. java代码求输入的三个数的最大值

    package com.c2; import java.util.Random; import java.util.Scanner; //输入10个数,找出最大一个数,并打印出来. public cl ...