在服务器端,我使用hibernate与数据库进行通信。但是,如果数据库处于脱机状态,则无法捕获与该连接相关的任何异常。更重要的是,在使用gwt的客户端站点上,执行了onFailure(Throwable caught)函数,但是catch.printStackTrace();没有打印。我希望gwt通知用户数据库当前不可用,但正如您所读,我无法捕获任何可以帮助我做到这一点的异常。有什么想法吗?
更新
e.g。
public class HibernateUtil
{
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
...
Session session = null;
try
{
session = HibernateUtil.getSessionFactory().openSession();
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
}
在这两种情况下,如果数据库处于脱机状态,则不会捕获异常,因此我无法发送有关连接到客户端的问题的消息
提前致谢
答案 0 :(得分:0)
您可以捕获异常服务器端,然后将其作为成功请求传递给DTO中的回调。向DTO添加“isError”标志,并在客户端的onSuccess()方法中检查标志并相应地处理。实际上,您可以使用下载的Exception从Success()上调用onFailure()。您可能必须使Exception可序列化。
答案 1 :(得分:0)
您必须为ServiceAsync接口添加“throws Exception”,并确保异常可以序列化。我建议在服务器端捕获db-exceptions,然后抛出自己的异常。