none
Catch不同类型exception 有什么好处 RRS feed

  • 问题

  • 我项目中用到catch exception有人常根据不同类型写多个catch,我到现在还不知道有什么好处,只是觉得麻烦,请高手给说说为什么要这么做,谢谢            
    example:

    catch (DbException dbException)
                {
    ...
                }
                catch (Exception exception)
                {
    ...
                }
    2009年2月6日 7:28

答案

  •  你记录的时候  能够完整的记录下来就最好了
    不同的 exception 可能有不同的成员  有额外的信息和参数的话  统一的写log函数不一定胜任
    但是在你的需求中 足以胜任  就再好不过了

    Guitar Hero IV -- Singing Rock & Roll.
    • 已标记为答案 a013strife 2009年2月11日 3:39
    2009年2月7日 16:26

全部回复

  • 可以告诉用户,是出现了什么错误,比如文件操作的例外有很多:
    有的是没有权限,有的是文件不存在,有的是文件路径不正确,这样比较清楚地知道是什么问题

    2009年2月6日 7:31
    版主
  • catch (DbException dbException)
                {
    ...
                }
                catch (Exception exception)
                {
    ...
                }



    catch (Exception exception)

       if  (exception is Exceptiondb )
                {
    ...
                }
               else
                {
    ...
                }

    几乎一样  

    如果你不需要区分  可以不作判断 

    要是你想区分   这就是个很好的流程控制,甚至可以不用再把 Exception 类型强行转化为Exceptiondb  效率也更高一点


    Guitar Hero IV -- Singing Rock & Roll.
    2009年2月6日 7:44

  • 韦恩卑鄙
    你讲的太好了
    2009年2月6日 9:45
  • 孟宪会 说:

    可以告诉用户,是出现了什么错误,比如文件操作的例外有很多:
    有的是没有权限,有的是文件不存在,有的是文件路径不正确,这样比较清楚地知道是什么问题




    说明错误用exception.message就行了啊,为什么还要区分不同exception



    2009年2月6日 16:48
  • a013strife 说:

    说明错误用exception.message就行了啊,为什么还要区分不同exception



    如果要进一步处理,就需要分清楚是什么类型的错误了,只靠exception.message就难处理了,exception.message是只给用户看的,有些可以通过代码解决的,
    2009年2月7日 0:49
    版主
  • 我的项目中catch exception的作用只有一个就是记下log,那样的话我觉得catch两种exception就是多余的,孟老师是不是这样呢?
    2009年2月7日 15:51
  •   我的项目中catch exception的作用只有一个就是记下log,那样的话我觉得catch两种exception就是多余的,孟老师是不是这样呢?
    2009年2月7日 15:52
  •   我的项目中catch exception的作用只有一个就是记下log,那样的话我觉得catch两种exception就是多余的,孟老师是不是这样呢?
    2009年2月7日 15:56
  •  >说明错误用exception.message就行了啊,为什么还要区分不同exception

    英文系统总不能还写一个英文的判断吧  那可太麻烦了哦
    Guitar Hero IV -- Singing Rock & Roll.
    2009年2月7日 16:24
  •  你记录的时候  能够完整的记录下来就最好了
    不同的 exception 可能有不同的成员  有额外的信息和参数的话  统一的写log函数不一定胜任
    但是在你的需求中 足以胜任  就再好不过了

    Guitar Hero IV -- Singing Rock & Roll.
    • 已标记为答案 a013strife 2009年2月11日 3:39
    2009年2月7日 16:26