try-catch-finally对返回值的影响
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对返回值的影响相关推荐
- 字节码分析finally块对return返回值的影响
直接进入主题.看如下代码: public int test(){int i=0;try {i=1;return i;} catch (Exception e) {i=2;return i;}final ...
- 关于finally对返回值的影响
1.finally对返回值的影响 我们知道finally在try中return语句执行之后 返回之前 执行的. 如果try中最后return一个变量 ,那finally也对这个变量修改后 到底会返回什 ...
- 关于Mybatis的insert方法返回值(将返回值受影响条数改为插入后的自增主键id)
今天做ssm项目的时候有一个这样的需求--我借阅一本书然后生成一条借阅记录(借阅记录的主键是递增的"borrowNum"),然后将这条记录的主键返回,在往上查阅资料后知道,只要在对 ...
- 细琢磨,try catch finally 执行顺序与返回值
try catch finally 常见格式如下: try{//应用代码}catch(Exception e){//异常捕捉处理}finally{//资源释放.流关闭等等 } 通常执行顺序: try有 ...
- java方法带参数返回值_Java方法中的参数太多,第6部分:方法返回
java方法带参数返回值 在当前的系列文章中,我正在致力于减少调用Java方法和构造函数所需的参数数量,到目前为止,我一直专注于直接影响参数本身的方法( 自定义类型 , 参数对象 , 构建器模式 , ...
- c# mysql executenonquery_C#中ExecuteNonQuery()返回值注意点分析
本文实例讲述了C#中ExecuteNonQuery()返回值注意点.对于C#数据库程序设计有一定的借鉴价值.分享给大家供大家参考之用.具体分析如下: 首先,在查询某个表中是否有数据的时候,我们通常用E ...
- ExecuteNonQuery()返回值注意点
查询某个表中是否有数据的时候,我用了ExecuteNonQuery(),并通过判断值是否大于0来判断数据的存在与否.结果与我所设想的很不一致,调试时才发现,其执行后返回的结果是-1,对此我很是不理解, ...
- java executenonquery_ExecuteNonQuery()返回值
查询某个表中是否有数据的时候,我用了ExecuteNonQuery(),并通过判断值是否大于0来判断数据的存在与否.结果与我所设想的很不一致,调试时才发现,其执行后返回的结果是-1,对此我很是不理解, ...
- mysql executenonquery_ExecuteNonQuery()返回值注意点
查询某个表中是否有数据的时候,我用了ExecuteNonQuery(),并通过判断值是否大于0来判断数据的存在与否.结果与我所设想的很不一致,调试时才发现,其执行后返回的结果是-1,对此我很是不理解, ...
最新文章
- c++引用的自我见解
- 033_jdbc-mysql数据库连接池
- 贪心算法之——阶乘之和(nyoj91)
- 通过扫码打开IOS的App Store下载APP(Android版暂时没找到解决方法)
- ggplot2绘图如何根据一个变量即区分颜色又区分深浅?
- 十 全局结果页面的配置
- Class.forName()、Class.forName().newInstance() 、New 三者区别!
- 数据分析对企业的重要性
- STM32开关总中断
- 检查库文件的rpath命令
- 零基础多久能学会python_零基础小白多久能学会python
- 2021-04-11
- 一大波能提高编程技能的游戏
- hdmi接口有什么用_VGA、DVI、HDMI三种视频信号接口有什么区别呢
- 手机编程html流星代码,如何使用html实现流星雨的效果(代码)
- uni-app第三方登录
- int const, const int *,int *const,int const *const 区别
- 7. Applepay 解码实操-golang
- ca45a_demo_c++_if语句
- JavaScript基础——使用Canvas画图
热门文章
- 2022-2028年中国内衣行业研究及前瞻分析报告
- java转python
- LeetCode简单题之K 进制表示下的各位数字总和
- LeetCode简单题之整数的各位积和之差
- 机器人导航两篇顶级会议论文解析
- 三维点云去噪无监督学习:ICCV2019论文分析
- 电脑总有安装计算机更新,为什么我们的电脑总会莫名的安装垃圾软件,看完吓一跳,欢迎关注...
- api.php t.cn,PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
- C++ list 的使用
- Execution failed for task ':app:mergeDebugResources'.