处理所有可能的(未经检查)例外良好做法?

时间:2016-04-07 07:49:39

标签: java exception java-ee exception-handling

目前我的注册情况如下:

(req.getMap() as Map).getDefaultCost()

在第一顺序中,我只对用户的两条消息(将成为public void signup(User newUser) throws Exception { log.info("Sign up: " + newUser.getEmail()); if (restService.emailAlreadyExists(newUser.getEmail())) { throw new Exception("Email already in use."); } List<Role> roles = new ArrayList<Role>(); roles = roleRepository.findAllOrderedByName(); roles.add(roleRepository.findByName("user")); newUser.setRoles(roles); newUser.setPassword(restService.getHashedValue(newUser.getPassword())); try { em.persist(newUser); } catch (Exception e) { throw new Exception("Just noobs use apps with less bugs. Try again. Now!"); } log.info(newUser.toString()); userEvent.fire(newUser); } )感兴趣。为了防止用户发出其他含义消息,我甚至需要将FacesMessage - 块扩展到角色。

嗯,我猜这是不好的做法。他们还说,他们还使用了通用的try气味。但是:我在这段小代码中检测到以下记录的Exception

  • Exception
  • IllegalStateException
  • IllegalArgumentException
  • EntityExistsException
  • TransactionRequiredException

甚至没有谈到ObserverException方法Exception的八个(!)getSingleResult()

我是否应该真正处理此示例中的所有javax.persistence.TypedQuery,或者可以跳过一些(和/或甚至可能使用上面的通用Exception)。

1 个答案:

答案 0 :(得分:0)

最佳做法是:单独捕获所有异常,并尽可能多地制作自定义日志消息。更容易理解错误的情况并采取相应的行动。

典型业务应用程序中的现实是:尝试对异常进行分组(例如,将由方法输入引起的所有可能异常分组,由db等引发的所有异常等)并了解有时您会将臭名昭着catch (Exception e)或者使用通用消息重新抛出一般性异常......或者人们会开始称呼有关像大象一样成长的日志。