C#难题:什么情况下 finally 中的代码不会执行

sihonglaoren 2011-08-10 08:24:44
大家罗列下。
...全文
1210 59 打赏 收藏 转发到动态 举报
写回复
用AI写文章
59 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序猿CKeen 2011-08-23
  • 打赏
  • 举报
回复
说的时候自己能先验证一下吗,误导人啊
syx151 2011-08-23
  • 打赏
  • 举报
回复
用goto跳出去
tg01 2011-08-23
  • 打赏
  • 举报
回复
没写的情况下肯定不会运行……
nattystyle 2011-08-23
  • 打赏
  • 举报
回复
这个问题的意义是什么
Dogfish 2011-08-23
  • 打赏
  • 举报
回复
在执行之前出现异常而且不能捕捉到,就不能执行。

finaly的原意是,无论是try和catch,最终还是要运行它的。
CosmoKey 2011-08-23
  • 打赏
  • 举报
回复
1)在进入finaly之前连续抛出两次以上一场,即在Catch中抛出异常,并不会被自己捕获。
2)在进入finaly之前,线程停止。
3)在进入finaly之前,GOTO
zhujiazhi 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 44 楼 jy02305022 的回复:]
引用 28 楼 zhouwc520 的回复:

总结下楼上同志们的话
1. return是不起作用的,finaly会在return前执行
2. catch块抛出异常,且外层没有对其进行catch时,.net机制会中断程序执行,所以,finaly里的语句也就不执行了


1的观点有问题
finaly 是在 return 之后执行的
试试下面的代码你就知道了

C# code
……
[/Quote]

finally 是在return前执行的,你把return i换成一个对象就知道了
你写的这个代码跟我曾经出过的面试题目很像的
sihonglaoren 2011-08-22
  • 打赏
  • 举报
回复
人呢?
mykge 2011-08-17
  • 打赏
  • 举报
回复
C#中的finally是必须执行的,同时C#中的Try..Catch..中finally不是必须结构。不过在以下情况下finally不会执行:
1.程序在执行finally之前崩溃;
2.程序线程在finally之前被终止;
3.程序在执行finally之前出现内存错误或数据溢出;
4.当Try..Catch..Finally结构错误。即Try没有执行(并非Try当中的语句),Finally自然不会执行。
5.内存错误导致的内存地址变化。
不过基本上以上情况都不太会出现。
sihonglaoren 2011-08-17
  • 打赏
  • 举报
回复
没有人知道?
freemangood 2011-08-15
  • 打赏
  • 举报
回复
必须执行!
dreamrising 2011-08-15
  • 打赏
  • 举报
回复
程序被弹出模式窗口卡住了,然后异常结束软件,比如结束线程,断电。。。
「已注销」 2011-08-15
  • 打赏
  • 举报
回复
写错了 i 应该定义在try外面
「已注销」 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 zhouwc520 的回复:]

总结下楼上同志们的话
1. return是不起作用的,finaly会在return前执行
2. catch块抛出异常,且外层没有对其进行catch时,.net机制会中断程序执行,所以,finaly里的语句也就不执行了
[/Quote]

1的观点有问题
finaly 是在 return 之后执行的
试试下面的代码你就知道了

try{

int i = 8;
return i;

}catch(Exception e){

}

finaly{

i = 9;

}
pmars 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 zhongkang567 的回复:]

不写的话就不执行了,还有就是在catch中有return就不执行了
[/Quote]
在catch中return也是会执行的!
康少_小贱 2011-08-15
  • 打赏
  • 举报
回复
不写的话就不执行了,还有就是在catch中有return就不执行了
dai78 2011-08-15
  • 打赏
  • 举报
回复
finally就是为了在出错的情况下也能执行才搞出的,要不然要它干吗啊
Silverfluxay 2011-08-15
  • 打赏
  • 举报
回复
it just happened[Quote=引用 19 楼 kingboy2008 的回复:]
C# code
try{

if(you believe(it) == true || you believe(it) == false){

I.believe(it);

}

}catch(Exception e){

throw new Exception("it is a miracle!")

}

finaly{
……
[/Quote]
sihonglaoren 2011-08-14
  • 打赏
  • 举报
回复
up下
飞天凤凰601 2011-08-12
  • 打赏
  • 举报
回复
然后跟美女私奔了。。。。。。。
加载更多回复(38)

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧