up, up! 请大家帮帮忙!

解决方案 »

  1.   

    各位,我原打算这样的,请看代码!
    public class MyException extends Exception
    {
        private static boolean bDebugMode = true;
        private int nErrorCode;
        /**
         * print debug information.
         * @param strInfo debug information
         * @return void
         **/  
        private void outputDebugInfo(String strInfo)
        {
            if (bDebugMode)
    {
    MyDebug.print("MyException--->" + strInfo); }
        }

        /**
         * Constructs a new MyException with the specified error code.
         * @param strReason error reason
         * @param nErrorCode error code
         * @see java.lang.Throwable#Throwable(String strMessage)
         **/ 
        public MyException(String strReason, int nErrorCode)
        {
         super(strReason);
      this.nErrorCode = nErrorCode;
    outputDebugInfo("MyException----->" + strReason);
        }

        /*
         * Returns the error code of this object.
         * @return error code
         **/ 
        public int getErrorCode()
        {
         return this.nErrorCode;
        }
    }
    在这个类里,我只能实现错误代码和信息属性的表示,对于LOG的处理还得依赖MyDebug或者MyLog(在此还没有写)进行分级,我的错误码统一归MyErrorCode类管理,只是一些错误常量,我对于Exception的分派和系统回调功能,总是想在这个类Exception里实现机能封装,请帮我出出主意,另外请问我这样作有什么缺点。拜托了,各位。
      

  2.   

    Exception的分派以及系统的回调是什么意思,能举个例子吗?
      

  3.   

    多谢大家关注了:
    Exception的分派的意思就是,我对于我所设计的系统内所有抛出的Exception能进行管理以及后续的分派处理,通过设计的细化,实现对Exception的分级,用来了解对商务系统的影响和当前商务系统的状态以及决定后续的处理。
    系统的回调: 这是我的想法,因为有些致命Exception抛出以后,我不想失去处理前的信息,类似于一个恢复dump的方式,实现商务系统的重新动作。
      

  4.   

    嗯,分派是指分类吗?用继承不行吗?
    public class HighlevelException extends Exception {...}
    public class Detailed1Exception extends HighlevelException {...}
    public class Detailed2Exception extends HighlevelException {...}如果你说得系统回调是指重新运行出现exception的部分,这好像不能在exception中实现,需要你在程序中实现。
      

  5.   

    Up, Up,
    jimjxr(宝宝猫)兄:你好!我的想法是为了我区分和处理Exception用,请在我怎么定义我的Exception的原型,以及怎么处理这些Exception,这方面给一些经验。比如使用接口,继承,分派。也请大家关注了,因为我每做完一个项目,回头看Exception处理时,总觉得单纯的错误码很不好,扩充时需要动错误码的静态变量,有时客户意见很大的,另外很多时候Exception的级别不一样,必须得catch一个,处理,再抛出,再循环,我觉得这肯定是设计的问题。
      

  6.   

    呵呵,我也没多少经验,只是觉得Java API中的Exception基本都是继承来的,有一个高层exception,比如IOException,其子类为具体的exception,如FileNotFoundException。不知道你加入错误代码的意图是什么?另外“catch一个,处理,再抛出,再循环”是指什么?
      

  7.   

    jimjxr(宝宝猫)兄:就比如我的Package也是一个小的系统,我需要把系统运行中的各种Exception都捕捉到,以我自己的MyException为基类导出的Exception来表示,用以表示系统当前的状态,以便于相关的处理,我对于我自己的Exception的框架设计不满意,希望能给我一个关于MyException原型的建议,让我对Exception的框架有一些改进。错误代码的意图就是为了表示错误状态;“catch一个,处理,再抛出,再循环”打个比方就是一个商务对象发消息给数据库管理对象,请求查询,而在查询的过程中,有连接错,连接池满等待,数据错,IO错等等Exception抛出,有的我需要继续抛出,有的我希望重新请求,还有的需要数据加工再抛出等等。这样就存在了这种情况。
      

  8.   

    我觉得MyException作为基类不需要什么功能啊,只有一个功能Exception类没有提供,就是在一个Exception里包含另一个Exception,把这个加上我觉得就没什么可加的了。Exception本身就表示了错误状态,再加上错误代码好像没必要吧。关于后面那个问题,意思是不同的Exception处理方法不同吧。我也想不出什么更好的办法,在catch中处理有什么问题吗?
      

  9.   

    jimjxr(宝宝猫) :一个Exception里包含另一个Exception,怎么实现呢? 另外,即使Exception本身就表示了错误状态,可是我的错误代码是通知我的系统啊,如果不通知错误代码,在catch中我怎么处理呢,我想要一个更好的方法或提示,希望能通过改进我的设计,而不让我在catch中根据错误码来判断级别,因为这样系统的依赖性太强了。
      

  10.   

    如果你可以要java代码中实现exception 的listen机制,则all is ok
      

  11.   

    Nested Exception:这个很简单,加一个变量保存另一个Exception就可以了,API中有的Exception就是这样设计的,主要是为了说明引起这个Exception的Exception是什么。
    catch时你不能一个一个处理吗,如:
    try
    {
      ...
    }
    catch( Detailed1Exception de1 )
    {
      ...
    }
    catch( Detailed2Exception de2 )

      ...
    }
      

  12.   

    jimjxr(宝宝猫) 兄:Nested Exception:这个建议很好!谢谢了,在实际中我可不可以通过在MyException中添加一个代表Exception对象的成员变量。
    有关分派,具体有没有人作过dispatcher的构造器,我想看看是什么样子的,希望大家捧捧场。
    还有就是在Exception类里,怎样运用Template method。