【发布时间】:2017-11-28 23:10:06
【问题描述】:
我想知道,当我尝试在数据库中创建和持久化对象时,处理异常的最佳方法。
所以我有一个名为 Rule 的表,其中包含 getter 和 setter:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int id;
@Column(name = "type", nullable = false, unique = true)
private String type;
@Column(name = "hint", nullable = false)
private String hint;
@Column(name = "help", nullable = false)
private String help;
@Enumerated(EnumType.STRING)
@Column(name = "language", nullable = false)
private Language language;
@OneToMany(mappedBy = "rule")
@Column(name = "user_rule")
private Set<UserRule> user_rule;
@OneToMany
@JoinColumn(name = "rule_id")
private Set<Sentence> sentence;
我有方法 create 谁在数据库中添加对象:
public static Rule create(EntityManagerFactory factory, String type, String hint, String help, Language language) {
EntityManager em = factory.createEntityManager();
EntityTransaction transaction = null;
Rule new_rule = new Rule();
try {
transaction = em.getTransaction();
transaction.begin();
new_rule.setType(type);
new_rule.setHint(hint);
new_rule.setHelp(help);
new_rule.setLanguage(language);
em.persist(new_rule);
transaction.commit();
} catch (Exception ex) {
if (transaction != null) {
transaction.rollback();
}
throw ex;
} finally {
em.close();
}
return new_rule;
}
- 我是否应该为每个异常使用多个 catch,哪些方法可以在 try 块中抛出?
- 如果我的解决方案是处理它的好方法,我怎样才能以好的方法打印与异常
ex相关的特定消息? - 如何在我的 JUnit5 中针对
try块的内容引发异常,以测试是否引发了异常(我应该引发所有异常吗?) - 如果我将一个 null 元素(设置为 nullable = false)传递给方法
create如何传输错误或异常(通过 hibernate/jpa 或者我应该像往常一样自己处理?)
如果您有任何其他建议,请告诉我!
提前感谢您的帮助。
【问题讨论】: