将DAO中的异常捕获到第一类调用方法

时间:2016-06-16 11:33:30

标签: java exception rmi

我的应用程序的架构是这样的:

  

Main classe - > ServiceBean - >经理 - > DAO。

我在DAO中抛出异常:

catch (HibernateException he) {
        throw new RemuRuntimeLoggableException(he, RuntimeLoggableException.HIBERNATE_UNKNOWN);
    }

然后在Manager中我捕获异常如下:

catch (RuntimeLoggableException e) {
                            log.info(e.getMessage());
                            e.printStackTrace();
                            throw new RuntimeLoggableException(e, RuntimeLoggableException.HIBERNATE_UNKNOWN);

在我的ServiceBean中,我有这个:

catch (RuntimeLoggableException e) {
        log.info(e.getMessage());
        e.printStackTrace();
        throw new RemoteException();

在我的主要课程中,我发现了这样的异常:

catch (RemoteException e) {
        log.info(prefixeLog + " Error");
        log.info(e.getMessage());

我还有一个接口Service.java。 ServiceBean实现了这个接口,这里涉及的方法在接口Service.java中声明如下:

 public void calculate( boolean flag )
  throws java.rmi.RemoteException;

我遇到的问题是ServiceBean中的异常RemoteException未在主类中捕获。我无法修改接口Service.java,因为它是由XDoclet自动生成的。想知道如何做到这一点吗?

在我的Service.java中,方法声明如下:

  public void calculate( boolean flag )
  throws java.rmi.RemoteException;

在我的班级中,声明如下:

 public static void main(String[] args) throws RuntimeLoggableException {
 try {
        log.info("Start" + prefixeLog);
        serviceBean.calculate(true);
        log.info("End" + prefixeLog);
    } catch (RemoteException e) {
        log.info(prefixeLog + " Error");
        log.info(e.getMessage());
    }
    finally {
        InitFramework.stopFramework(FrameworkFacade.BATCH);
        System.exit(retour);
    }
}

在我的serviceBean中:

 public void calculate(boolean flagExclurePlansPerimes) throws RemoteException {

1 个答案:

答案 0 :(得分:0)

您正在记录RemoteException的消息,但是您会抛出一条没有消息的RemoteException