据我所知,框架自定义的异常都不会把本身的原始异常类丢失,spring中所有异常都是DataAccessException的子类,下面的DataAccessException源码【抽象类】:
public abstract class DataAccessException extends NestedRuntimeException {
/**
* Constructor for DataAccessException.
* @param msg the detail message
*/
public DataAccessException(String msg) {
super(msg);
}
/**
* Constructor for DataAccessException.
* @param msg the detail message
* @param cause the root cause (usually from using a underlying
* data access API such as JDBC)
*/
public DataAccessException(String msg, Throwable cause) {
//很明显,这里提供把原始异常做为参数的构造方法
super(msg, cause);
}
public User findUserById(Integer userId) {
Session session = sessionFactory.openSession();
User user = (User) session.get(User .class, userId);
session.close();
return user;
}
以下写在service
public void saveUser(User newUser){
User user =dao.findUserById(newUser.getUserId());
if(user !=null){
throw new Exception("用户"+newUser.getUserId()+"重复");
}
dao.saveUser(newUser);
}
public User findUserById(Integer userId) {
Session session = sessionFactory.openSession();
User user = (User) session.get(User .class, userId);
session.close();
return user;
}
以下写在service
public void saveUser(User newUser){
User user =dao.findUserById(newUser.getUserId());
if(user !=null){
throw new Exception("用户"+newUser.getUserId()+"重复");
}
dao.saveUser(newUser);
}
public User findUserById(Integer userId) {
Session session = sessionFactory.openSession();
User user = (User) session.get(User .class, userId);
session.close();
return user;
}
以下写在service
public void saveUser(User newUser){
User user =dao.findUserById(newUser.getUserId());
if(user !=null){
throw new Exception("用户"+newUser.getUserId()+"重复");
}
dao.saveUser(newUser);
}