首页 新闻 赞助 找找看

为什么在异常的时候要把异常清空呢

-1
[已解决问题] 解决于 2014-11-07 15:31
                        try
                            {
                                if (ClientListInfo[num].Connected)
                                {
                                    ClientListInfo[num].Shutdown(SocketShutdown.Both);
                                    ClientListInfo[num].Close();
                                }
                            }
                            catch (ObjectDisposedException exception)
                            {
                                if (exception != null)
                                {
                                    exception = null;
                                }
                            }
                            catch (ArgumentOutOfRangeException exception2)
                            {
                                if (exception2 != null)
                                {
                                    exception2 = null;
                                }
                            }

我看人家写代码的时候 有两个地方的异常会用到exception = null;

可是以我理解  要是不对异常处理的时候就把 直接 catch{}里面不做任何操作就行了,可是人家这样写exception = null;....这个就不知道为什么了  ,特意来请教下大家

C#
.F.的主页 .F. | 初学一级 | 园豆:13
提问于:2014-09-27 17:18
< >
分享
最佳答案
0

一楼的说法是瞎扯。

同时,这段代码的也没有任何意义。

试想,既然能catch了,exception还能为null?这个判断本身就是扯蛋了。

至于垃圾回收,超过catch的作用域后,exception变量就过期了,垃圾回收机制就会在必要的时候回收。

奖励园豆:5
519740105 | 大侠五级 |园豆:5810 | 2014-09-27 18:23

这个问题本来就是个瞎扯的问题,没有别的解释,出了catch是会释放,但不是实时释放

draculav | 园豆:734 (小虾三级) | 2014-09-28 10:39
其他回答(3)
0

直接释放掉了呗,不然垃圾回收不是实时回收的,似乎很少需要这种情况

draculav | 园豆:734 (小虾三级) | 2014-09-27 17:26

catch{}这样会产生异常的 垃圾么? 不是没有产生变量么

支持(0) 反对(0) .F. | 园豆:13 (初学一级) | 2014-09-27 17:41

@.F.:还是有极端的情况下有可能有用的,问题的前提是这么写有必要,不是说这么写有道理,这个极端的前提是,内存需求苛责,而垃圾释放机制不是实时的,所以实时释放,至于不为空,这个判断一般是用不上,除非有拦截的情况

支持(0) 反对(0) draculav | 园豆:734 (小虾三级) | 2014-09-28 10:38
1

这种方法简直是坑爹!写这种代码不被人骂死!

吴瑞祥 | 园豆:29449 (高人七级) | 2014-09-28 08:22
0

搞笑的吧!

晓菜鸟 | 园豆:2594 (老鸟四级) | 2014-09-29 19:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册