关于异常处理的疑惑,Hibernate

来源:百度知道 编辑:UC知道 时间:2024/06/03 17:51:42
在程序中时常能遇到这样的情况:
我们不知道程序是否会抛出异常,我们会在可能出现异常的地方加入try/catch,当处理顺利的时候,返回给前台页面一个提示,catch异常的时候,给出用户友好的错误提示。
下面的例子:

Action:
try {
s.updateArticle(arc);
msg.append("设置成功!");
} catch (Exception e) {
e.printStackTrace();
msg.append("没有设置成功!");
}

DAO:
public void updateArticle(Article arc) {
Transaction tx = null;
Session session = HibernateUtil.getSession();
try {
tx = session.beginTransaction();
session.update(arc);
tx.commit();
} catch (HibernateException ex) {
ex.printStackTrace();
if (tx != null) {
HibernateUtil.rollbackTransaction(tx);
}
} finally {
if (session != null) {
HibernateUtil.closeSession(session);
}
}
}

从上面的例子可以看出些问题,因为只有在
public void updateArticle(Article arc) throw HibernateException{
}
这样Action才能出来到可能更新失败时候的异常,但我没这么做,因

你的updateArticle中,异常处理代码如下:

catch (HibernateException ex) {
ex.printStackTrace();
if (tx != null) {
HibernateUtil.rollbackTransaction(tx);
}

如果你想让Action能接收到异常,可以强制抛出一个异常就是了,建议你将这一部分加一行代码就可以,这样,当数据库更新异常时,Action也“知道”这个更新操作没有成功:

catch (HibernateException ex) {
ex.printStackTrace();
if (tx != null) {
HibernateUtil.rollbackTransaction(tx);
throw new Exception(ex.toString());
}

先rollback,然后throw一个异常。

Hibernate也不太懂,过来学习学习!