可用分有7000多了,准备散掉,讨论一些日常开发中经常遇到的,有争议的问题,希望大家踊跃发言,并欢迎各路高手指点迷津!每个问题100分,给发言最精彩的5个人。今天开始第一个:什么时候应该使用(处理)异常?转化数据类型需要吗?新建对象需要吗?访问数据库需要吗?访问网络需要吗?……

解决方案 »

  1.   

    我知道一般是在访问数据库和硬盘文件时是要加try catch
      

  2.   

    try catch 有什么坏处?
      

  3.   

    我一般使用在访问数据库上面,其实你可以使用在你觉得会有不确定因素的任何地方。
    不过我还是觉得在开发阶段不要用过多的try,这样定位错误速度慢。在发布的时候才把异常加上去
      

  4.   

    一个普通的Sql查询也需要用try..catch吗?好像并没有太多的不确定因素啊?
      

  5.   

    嗯.记得以前有一个MS的工程师说过.用try catch比较影响性能..不要用太多.
    故.我很少用try catch.
      

  6.   

    我也觉得try catch影响性能,如果自己可以确信某段代码不出扔出异常,那么省略,自己确定不了,那么就必须catch
      

  7.   

    你可以查看一下Exception类,以及各个类中的Exception扩展类,凡是有可能出现Exception(或各类的扩展)中的异常情况的代码处,都可以/需要加try{}catch{}...
      

  8.   

    终于来了一个带星的,就是想问问可以和需要的区别呢,我觉得到处都是try..catch很麻烦,代码也不美观,所以应该不是所有可以加的地方都需要加吧?那到底什么时候应该加呢?
      

  9.   

    我觉得1.开数据库并执行sql语句的时候 2.用到stream流的时候
      

  10.   

    如果你在自己的类中封装了try..catch块,那么别人调用你的时候就不用加了,因为你已经确保你不会抛出异常了,这个时候你的函数一般都会返回bool值。
    如果你在自己的类中不使用try..catch块,那么别人调用你就必须要加,因为你不能保证你的代码不抛出异常。
    个人认为凡是可能产生异常的地方都要加try...catch,至于说try..catch影响效率,为什么不考虑下用try...catvh的效率损失和不用try...catch让客户直接看到.NET抛出来的异常哪个影响更坏呢?
      

  11.   

    try-catch语句本身对性能的影响很小。
    只是有异常抛出的话影响性能非常厉害。
    但若有异常抛出的话,你不得不catch,不catch程序就死了。也就是说,尽量少throw异常可以减少不必要的性能损失。但try-catch在必要的地方还是应该使用吧。当然,像样写也很不划算:
    try
    {
       ....
    }
    catch(Exception ex)
    {
       ...
       throw ex;   //因为最耗时的是throw这句
    }
      

  12.   

    学习一下。因为我一直不喜欢try catch 。我不喜欢把未知的问题扔给它。可以知的问题有很多可以通过判断语句去解决。
    所以我用它一般是在测试的时候大量的加。然后发现catch的就解决。之后把没用的地方拿掉。
    例如访问网络我觉得是一定要加的。也就是说不确定因素多的地方就应该加。可以让程序不倒掉。
      

  13.   

    可能你自己在写的时候觉得没有什么问题,但是你的软件不是给自己用的是给用户用的,user他不懂这些他门需要的是功能,你总不能把各种各样非正常操作抛出的exception 丢给user吧
    所以建议加上
      

  14.   

    个人做b/s开发的 为了增强用户体验以及及时反馈错误信息给用户还是在可能引发error的地方try一下比较好
      

  15.   

    try catch~~~~
    对于不确定的代码应该多用,而自己有把握的不会出错的代码不用.
      

  16.   

    Reflector.exe看一下.net基类库,全是try catch finally,他们也提倡
      

  17.   

    try 
    catch
    好东西啊
      

  18.   

    那使用异常是为了开发时方便调试呢,还是为了运行时错误友好呢,如果是为了方便调试,那release时是不是应该把这些异常处理去掉?
      

  19.   

    个人感觉:
    1,没有错误的话加上try……catch也不慢
    2,我写程序全部都有try……catch
      

  20.   

    Try-catch在我写的程序肯定有的!但是不会多用!
      

  21.   

    有点意思,楼主可以再开一个贴子,问问什么时候该用Attribute
      

  22.   

    Attribute可能用的更少了吧,不过确实挺有意思的有好的问题请到:
    http://community.csdn.net/Expert/topic/5016/5016795.xml?temp=.5532495
      

  23.   

    1.WEBSERVICE
    2.数据库
    3.数据类型转换,比如字符转数字
    4.计算,可能造成溢出,或零作除数等问题
    5.对硬盘,文件进行操作
    6.异步操作
    7.超时
    8.内存占用过大
    9.多人操作造成数据错乱
      

  24.   

    我认为是对程序本身非常关键的地方需要捕获异常处理程序的关键代码,关系着程序是否可以运行下去,或运行的好与坏
    在这种致命异常处,一定要捕获异常,一来可以保证程序正常即出
    二来,可以在用户使用(无环境时)出现异常时,便于分析不要动不动就出异常报告,无关紧要的,加以后台限制就可以啦===============================
    http://cache.monocn.com
      

  25.   

    好象传统的C是用函数的返回值来决定程序一步该如何走,在.Net中,有的函数执行后,统统返回void(有点人性的也许会返回bool),而这些函数,如果执行失败,会抛出特定的异常,由调用方通过异常的类型决定下一步该怎么走,异常不只是为了报错.
      

  26.   

    什么时候应该使用(处理)异常?转化数据类型需要吗?新建对象需要吗?访问数据库需要吗?访问网络需要吗?……   轉化數據類型中應該可以不用,在代碼編譯中,如果這步都過不了,程序報錯,但是在出現下限的數組、集合索引建議用Checked來檢查溢出;
       新建對象也不用,但是如果對象的生命期限於當前區域建議用Using來新建;
       訪問數據庫,這裡需要,特別是在訪問遠程服務器是不知道很大細節:網絡是否通,服務器是否在運行,這時需要異常處理。
       相同的。網絡也需要。