一般来说
class外好些
方便调试

解决方案 »

  1.   

    谢谢指点,我也是想知道大家的做法是什么,因为我有个朋友要求我做在class中,我觉的不是很好。
      

  2.   

    看你这个类是干什么用的及异常的类别。
    类的功能越大,可能你要考虑在类中自己处理异常,以向外部类提供你自己定义的更高级别抽象的信息(即屏蔽掉多余的底层信息)。
    可以用具体例子来说明:
    为了用自己的格式读文件,将file类封装在myFile中,那么myFile类就需要
    将文件操作等基本异常抛出来让外部调用类指导。
    而如果创建一个配置参数类,正常情况下是读取一个配置文件获取配置信息,
    在文件读取异常时,可能不需要抛出异常而是用默认参数代替。
      

  3.   

    saga0036(Mars):
    你的意思是:
    比如我的类是一个xml文件的操作,用于读取配置参数。
    我在类中就只把xml异常捕获掉,不做处理。
    而只抛出其它的一些和配置参数有关的异常。比如要读取的参数不存在啊什么的,我就抛一个异常出来。我看Microsoft Visual Studio .NET 文档说不建议使用太多的异常啊,系统资源占用较大,如果我在类中使用了异常,在类外也使用有些不妥吧?
      

  4.   

    抛不抛、处不处理、在哪里处理异常没有绝对的定义。
    你要判断哪些异常在外捕获有意义,哪些直接在类中处理合适。
    这与你对你的类的功能范围界定和你个人的设计风格有关。
    你需要对外部掉用类和此类进行一个职责的分配,那些可以在此类中操作,那些外部类需要知道等等。
    如果你的类是一个xml文件的操作,用于读取配置参数。
    你在类中就把xml异常捕获,同时要判断此异常的种类。
    抛不抛出其它的一些和配置参数有关的异常要根据你的设计来决定。
    外部类需要知道参数不存在吗?知道了需要干什么?如果外部类很简单,那么它的功能是否可以并入到此类里面来呢?如果很复杂,需不需要把选择默认参数的决定权下放给这个XML参数读取类还是增加一个新类?
    比如要读取的参数不存在啊什么的,你就可以用一个默认参数代替抛异常,因为外部类处理此异常没有意义还增加她的负担(这是我的模式,当然根据实际情况而定)。
      

  5.   

    请产考<<UML和模式应用-面向对象分析与设计导论>>chapter 18,34,35
    <<设计模式-可复用面向对象软体设计的基础>>
      

  6.   

    try
    {
      ......
    }
    catch(......)
    {
      ......
    }
    用的太多是否影响系统性能???
    如果我在每个方法中都用了try -- catch,在外部类如果使用了多个方法,那不是有很多 try -- catch.看vs7文档说异常使用太多影响系统性能,不推荐使用太多。不知道这个说法对不,希望赐教。
      

  7.   

    建议在Class里捕获已知异常,并处理。
    try
    {
    }
    catch( YourException e)
    {
       //some process
       throw new exception(e)
    }也可将异常捕获后,再抛出