exception - 为什么我无法捕获 EJB 异常?

标签 exception jpa jakarta-ee ejb

我似乎无法在我的 java ee 6 项目中捕获 NoResultException 或 EJBException 等异常。我做错了什么吗?我在 EJB 容器之外捕获了异常,但这是我第一次使用 EJB。谢谢。

@Stateless
public class UserEJB {

    @PersistenceContext
    EntityManager em;

    public String getUserName(User user) {
        return user.getName();
    }

    public User fetchUserByEmail(String email) {

        User user = em.createNamedQuery("User.findByEmail", User.class).setParameter("email", email).getSingleResult();
        return user;
    }

    public User fetchUserById(int id) {
        return em.createNamedQuery("User.findByUserId", User.class).setParameter("userId", id).getSingleResult();
    }

    public List<User> fetchAllUsers() {
        return em.createNamedQuery("User.findAll", User.class).getResultList();
    }
}

@Named(value = "userController")
@RequestScoped
public class UserController {

    private User user = new User();
    @EJB
    UserEJB userEJB;
    @Inject
    SecurityController securityController;

    public UserController() {
    }

    public void login(ActionEvent event) {

        try {

             User userLogin = userEJB.fetchUserByEmail(user.getEmail());

        } catch (Exception e) {

        }

        if (userLogin.getPassword().equals(user.getPassword())) {
            securityController.setIsLoggedIn(true);
            securityController.setIsAdmin(true);
            securityController.setUser(user);
        }
    }

    /**
     * @return the user
     */
    public User getUser() {
        return user;
    }

    /**
     * @param user the user to set
     */
    public void setUser(User user) {
        this.user = user;
    }

最佳答案

如果在代码中放入两个 System.out.println 会怎样?一个位于异常处理程序中,另一个位于 if 语句之前。你得到了什么?

查看代码,我想说您将能够捕获该异常,该异常应该是包装在 EJB 异常中的 JPA 异常。

关于exception - 为什么我无法捕获 EJB 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4339864/

相关文章:

Python - 使用异常提升进行参数检查

java - JPA Object[] 不是已知的实体类型

mysql - 通过JPA向MySQL添加新列

java - 异常: Could not parse query :containsOwn(text)

google-app-engine - Google App Engine 全局变量 (ServletContext)

java - 抛出异常时程序无法运行

exception - Kotlin - 抛出自定义异常

java - Hibernate:防止更新 session 中从未手动更新的脏实例

php - Laravel 自定义异常

google-app-engine - Grails,App Engine,JPA-初学者在Grails上遇到麻烦