【散分讨论】No.01-什么时候应该使用(处理)异常? 可用分有7000多了,准备散掉,讨论一些日常开发中经常遇到的,有争议的问题,希望大家踊跃发言,并欢迎各路高手指点迷津!每个问题100分,给发言最精彩的5个人。今天开始第一个:什么时候应该使用(处理)异常?转化数据类型需要吗?新建对象需要吗?访问数据库需要吗?访问网络需要吗?…… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我知道一般是在访问数据库和硬盘文件时是要加try catch try catch 有什么坏处? 我一般使用在访问数据库上面,其实你可以使用在你觉得会有不确定因素的任何地方。不过我还是觉得在开发阶段不要用过多的try,这样定位错误速度慢。在发布的时候才把异常加上去 一个普通的Sql查询也需要用try..catch吗?好像并没有太多的不确定因素啊? 嗯.记得以前有一个MS的工程师说过.用try catch比较影响性能..不要用太多.故.我很少用try catch. 我也觉得try catch影响性能,如果自己可以确信某段代码不出扔出异常,那么省略,自己确定不了,那么就必须catch 你可以查看一下Exception类,以及各个类中的Exception扩展类,凡是有可能出现Exception(或各类的扩展)中的异常情况的代码处,都可以/需要加try{}catch{}... 终于来了一个带星的,就是想问问可以和需要的区别呢,我觉得到处都是try..catch很麻烦,代码也不美观,所以应该不是所有可以加的地方都需要加吧?那到底什么时候应该加呢? 我觉得1.开数据库并执行sql语句的时候 2.用到stream流的时候 如果你在自己的类中封装了try..catch块,那么别人调用你的时候就不用加了,因为你已经确保你不会抛出异常了,这个时候你的函数一般都会返回bool值。如果你在自己的类中不使用try..catch块,那么别人调用你就必须要加,因为你不能保证你的代码不抛出异常。个人认为凡是可能产生异常的地方都要加try...catch,至于说try..catch影响效率,为什么不考虑下用try...catvh的效率损失和不用try...catch让客户直接看到.NET抛出来的异常哪个影响更坏呢? try-catch语句本身对性能的影响很小。只是有异常抛出的话影响性能非常厉害。但若有异常抛出的话,你不得不catch,不catch程序就死了。也就是说,尽量少throw异常可以减少不必要的性能损失。但try-catch在必要的地方还是应该使用吧。当然,像样写也很不划算:try{ ....}catch(Exception ex){ ... throw ex; //因为最耗时的是throw这句} 学习一下。因为我一直不喜欢try catch 。我不喜欢把未知的问题扔给它。可以知的问题有很多可以通过判断语句去解决。所以我用它一般是在测试的时候大量的加。然后发现catch的就解决。之后把没用的地方拿掉。例如访问网络我觉得是一定要加的。也就是说不确定因素多的地方就应该加。可以让程序不倒掉。 可能你自己在写的时候觉得没有什么问题,但是你的软件不是给自己用的是给用户用的,user他不懂这些他门需要的是功能,你总不能把各种各样非正常操作抛出的exception 丢给user吧所以建议加上 个人做b/s开发的 为了增强用户体验以及及时反馈错误信息给用户还是在可能引发error的地方try一下比较好 try catch~~~~对于不确定的代码应该多用,而自己有把握的不会出错的代码不用. Reflector.exe看一下.net基类库,全是try catch finally,他们也提倡 try catch好东西啊 那使用异常是为了开发时方便调试呢,还是为了运行时错误友好呢,如果是为了方便调试,那release时是不是应该把这些异常处理去掉? 个人感觉:1,没有错误的话加上try……catch也不慢2,我写程序全部都有try……catch Try-catch在我写的程序肯定有的!但是不会多用! 有点意思,楼主可以再开一个贴子,问问什么时候该用Attribute Attribute可能用的更少了吧,不过确实挺有意思的有好的问题请到:http://community.csdn.net/Expert/topic/5016/5016795.xml?temp=.5532495 1.WEBSERVICE2.数据库3.数据类型转换,比如字符转数字4.计算,可能造成溢出,或零作除数等问题5.对硬盘,文件进行操作6.异步操作7.超时8.内存占用过大9.多人操作造成数据错乱 我认为是对程序本身非常关键的地方需要捕获异常处理程序的关键代码,关系着程序是否可以运行下去,或运行的好与坏在这种致命异常处,一定要捕获异常,一来可以保证程序正常即出二来,可以在用户使用(无环境时)出现异常时,便于分析不要动不动就出异常报告,无关紧要的,加以后台限制就可以啦===============================http://cache.monocn.com 好象传统的C是用函数的返回值来决定程序一步该如何走,在.Net中,有的函数执行后,统统返回void(有点人性的也许会返回bool),而这些函数,如果执行失败,会抛出特定的异常,由调用方通过异常的类型决定下一步该怎么走,异常不只是为了报错. 什么时候应该使用(处理)异常?转化数据类型需要吗?新建对象需要吗?访问数据库需要吗?访问网络需要吗?…… 轉化數據類型中應該可以不用,在代碼編譯中,如果這步都過不了,程序報錯,但是在出現下限的數組、集合索引建議用Checked來檢查溢出; 新建對象也不用,但是如果對象的生命期限於當前區域建議用Using來新建; 訪問數據庫,這裡需要,特別是在訪問遠程服務器是不知道很大細節:網絡是否通,服務器是否在運行,這時需要異常處理。 相同的。網絡也需要。 如何触发事件 如何使用好ListView? 求一个vs20005的下载地址,谢谢了,找了半天没找到一个能用的.急坏了呀. 怎样可以dataGridView的第一列中显示这一行是第几条记录? 【下载】WinForm嵌入仿FCK控件类库(只有基本功能)+【简单教程】 请问在.net的winform里能实现这样的datagrid的效果吗? 关于程序与服务之间的问题 请大家多多的来帮助哦!!!!!!!!!!!!! 如何播放Flash? dataGrid 的问题 c# 三层架构中的proxy如何实现 oracle连接 非常急!
不过我还是觉得在开发阶段不要用过多的try,这样定位错误速度慢。在发布的时候才把异常加上去
故.我很少用try catch.
如果你在自己的类中不使用try..catch块,那么别人调用你就必须要加,因为你不能保证你的代码不抛出异常。
个人认为凡是可能产生异常的地方都要加try...catch,至于说try..catch影响效率,为什么不考虑下用try...catvh的效率损失和不用try...catch让客户直接看到.NET抛出来的异常哪个影响更坏呢?
只是有异常抛出的话影响性能非常厉害。
但若有异常抛出的话,你不得不catch,不catch程序就死了。也就是说,尽量少throw异常可以减少不必要的性能损失。但try-catch在必要的地方还是应该使用吧。当然,像样写也很不划算:
try
{
....
}
catch(Exception ex)
{
...
throw ex; //因为最耗时的是throw这句
}
所以我用它一般是在测试的时候大量的加。然后发现catch的就解决。之后把没用的地方拿掉。
例如访问网络我觉得是一定要加的。也就是说不确定因素多的地方就应该加。可以让程序不倒掉。
所以建议加上
对于不确定的代码应该多用,而自己有把握的不会出错的代码不用.
catch
好东西啊
1,没有错误的话加上try……catch也不慢
2,我写程序全部都有try……catch
http://community.csdn.net/Expert/topic/5016/5016795.xml?temp=.5532495
2.数据库
3.数据类型转换,比如字符转数字
4.计算,可能造成溢出,或零作除数等问题
5.对硬盘,文件进行操作
6.异步操作
7.超时
8.内存占用过大
9.多人操作造成数据错乱
在这种致命异常处,一定要捕获异常,一来可以保证程序正常即出
二来,可以在用户使用(无环境时)出现异常时,便于分析不要动不动就出异常报告,无关紧要的,加以后台限制就可以啦===============================
http://cache.monocn.com
新建對象也不用,但是如果對象的生命期限於當前區域建議用Using來新建;
訪問數據庫,這裡需要,特別是在訪問遠程服務器是不知道很大細節:網絡是否通,服務器是否在運行,這時需要異常處理。
相同的。網絡也需要。