关于Try的问题 try { // 1 } catch(Exception) { //2 } finally { //3 } //4请问上面代码中,写在3处的代码和写在4处的代码有什么区别呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 try { // 1 RETURN; } catch(Exception) { //2 } finally { //3 } //43执行4部执行 *****************************************************************************欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/ 释放这些资源的代码放置在 finally 块中 位置3和位置4的代码意义一样,不过看起来位置3和try内部结合得比较紧密,而位置4比较松散,关系不大。一般在代码分段时需要考虑,方便阅读。 try { // 1 } catch(Exception) { //2 throw new Exception(); } finally { //3 } //4假如你的代码是这样,那3一定会被执行,4不会被执行 区别在于catch中异常是否重新抛出,如果重新抛出,那么3处还是会执行,而4处不会 2楼说的很对,当你有Return语句时,Return后面的代码段就不会执行了。但是在Finally中的代码无论在任何时候都会执行的。 如果在块1或2中有return ,3执行,4不执行 楼主的理解错误。楼上几位说的很对,写在finally块里的语句不管任何情况下都会执行,甚至在try块或catch块里有return语句或抛异常的语句时也会执行。只有在一种情况下位置3和4的作用才类似,那就是try块中没有return语句,catch块中不抛异常,没有return 语句。那么代码放在位置3或4都会被执行。 Finally中的代码无论在任何时候都会执行的。 我还以为是专家呢,我差点相信了,幸亏我又试验了一下:如果无异常,2执行,如果1部分发生异常,1234都会执行。如果4之前有Retrun语句,那么3会执行,4不会执行,这就是3和4位置处代码的根本区别。看来最对的是2楼的朋友。 自定义控件中,用List<customclass>作为控件的属性,怎么让他在设计模式的时候显示改变后的效果呢? c#编写DLL如何调用VC开发的ocx内的事件 C#序列化之后的对象为byte[]类型数组但是无法转换成string类型? string与String的区别 大家帮帮忙。。。急用~~ C#怎么实现缩略图 怎样让对话框不返回 如何给控件更改图标 同志们有没有这样的感觉,.net做出来的程序占内存太大了 请帮我看看这段c#有什么错? 求救:C#如何使文本框输入数字和小数点,且小数点只有一位呢 SQL替换,谢谢
{
// 1
RETURN;
}
catch(Exception)
{
//2
}
finally
{
//3
} //4
3执行4部执行
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
{
// 1
}
catch(Exception)
{
//2
throw new Exception();
}
finally
{
//3
} //4
假如你的代码是这样,那3一定会被执行,4不会被执行
只有在一种情况下位置3和4的作用才类似,那就是try块中没有return语句,catch块中不抛异常,没有return 语句。那么代码放在位置3或4都会被执行。
我还以为是专家呢,我差点相信了,幸亏我又试验了一下:如果无异常,2执行,如果1部分发生异常,1234都会执行。如果4之前有Retrun语句,那么3会执行,4不会执行,这就是3和4位置处代码的根本区别。看来最对的是2楼的朋友。