【发布时间】:2023-11-08 03:57:02
【问题描述】:
我的应用架构是这样的:
主类 -> ServiceBean -> Manager -> 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 {
【问题讨论】:
-
RemoteException是否有可能在多个库上有多个实现?尝试主要拥有:catch (java.rmi.RemoteException ex) { ... } -
@AvihooMamka:您的解决方案也不起作用。主班和其他班在不同的项目上。我在我的问题中添加了更多解释。请检查一下好吗?
-
如果这仍然是一个问题,您能否添加您收到的日志消息?