下面是我的代码:
        try
     {
     return (KSB) ctx.getBean("KSB");
     }
     catch(BeanCreationException e)
     {
     System.out.println("xxx");
     throw e;
     }
类KSB的定义:public class KSB{    private Bank  KSS;    public Bank getKSS() {
        return KSS;
    }    public void setKSS(Bank kss1) {
        this.KSS= kss1;
    }
}对应的bean定义:     <bean id="KSB" class="com.xtc.KSB">
        <property name="KSS" ref="KSS"/>
    </bean>    <bean id="KSS" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
        <property name="serviceUrl" value="rmi://localhost:1900/KSS"/>
        <property name="serviceInterface" value="com.xtc.Bank"/>
    </bean>
当rmi服务端没有启动的时候会出现BeanCreationException 的异常,但是为什么我上面的代码无法捕捉到这个异常?
这个异常该如何捕捉?主要是我想不断尝试连接rmi服务端,但是这个异常捕捉不到,就无法实现这一想法了.多谢了啊~~

解决方案 »

  1.   

    rmi服务这么高深的技术,还真没用过呢?
      

  2.   

    希望有对Spring比较熟悉的来帮忙解答下啊·~
      

  3.   

    将异常往函数外部传递,这就要使用到关键字throws;
    throws用于将函数内部产生的异常抛给主调函数;
      

  4.   

    throw e;
    你抛了  但处理呢
      

  5.   


    System.out.println("xxx");
    根本连这句都没执行啊......也就是没有捕捉到....
      

  6.   

    将异常往函数外部传递,这就要使用到关键字throws; 
    throws用于将函数内部产生的异常抛给主调函数;
      

  7.   

    那么throws之前的那句语句就不执行了? 不可能把.....
      

  8.   

    那么好吧,我不抛出异常,直接输出错误信息,可是也不会在这里输出我要的错误信息的。try  
    {
       return (KSB) ctx.getBean("KSB"); 

    catch(BeanCreationException e) { 
       System.out.println("发生错误:" + e.getMessage());
    }
      

  9.   

    看来BeanCreationException不是从你的第一段代码里抛出的呀喵~~``
      

  10.   


    public static ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
      

  11.   

    出了错自己承担      
      try
            {
                return (KSB) ctx.getBean("KSB");
            }
            catch(BeanCreationException e)
            {
                System.out.println("发生错误:" + e.getMessage());
            }要不就推卸责任,让其它人处理 try
            {
                return (KSB) ctx.getBean("KSB");
            }
            catch(BeanCreationException e)
            {
                throw e;
            }方法申明后面加上throws BeanCreationException
      

  12.   

    在getBean方法里面就被处理掉了。也不是非要用异常机制来实现楼主的想法。是否考虑下getBean方法的返回值是否为null来判断rmi服务器端有没有启动
      

  13.   

    看看ctx的getBean方法吧,里面你想要的那种情况下的异常肯定被XX掉了,所以你才扑捉不到你想要的XXX
      

  14.   


    KSB k = ctx.getBean("KSB");
        
         while (k == null)
         {
         Thread.sleep(1000);
         ksb =ctx.getBean("KSB");
         }我这样处理,进不到循环里的...
      

  15.   

    是不是这里出了异常哟。你凭什么断定这个BeanCreationException 异常是这里产生的?你的 bean 在xml 中已经配置完整了,在 getBean(...)时,当然是可以成功创建的。
    这一部分可是与 rmi 没有什么关系的,不要自己被自己吓住了祝楼主成功。
      

  16.   


    我整个程序里只有这一句代码来getBean的呃.....我就不知道别的地方哪里还会抛出异常了....
      

  17.   

    难道是我执行return (KSB) ctx.getBean("KSB"); 这句之前,Spring自己就先把所有配置的bean都初始化了?然后这过程中异常了....
      

  18.   

    算了,不用bean了.....直接自己在程序里生成对象算了...
      

  19.   

    不是KSB产生时发生异常,而是KSS产生时发生异常。
    异常被SPRING内部消化掉了,KSB根本就没来得及产生