我有一个关于使用最佳实践的非常基本的问题try
/catch
.
我有一个像这样的简单函数(DAO):
public void addVehicle(Vehicle vehicle) {
em.getTransaction().begin();
em.persist(vehicle);
em.getTransaction().commit();
}
并在 Web 服务中使用 DAO 函数:
@WebMethod(operationName = "addVehicle")
public void addVehicle(Vehicle vehicle) {
try {
vehicleDAO.addVehicle(vehicle);
System.out.print("Vehicle added");
} catch (Exception e) {
e.printStackTrace();
}
}
或者更好地使用try
/catch
DAO 函数内部如下:
public void addVehicle(Vehicle vehicle) {
try {
em.getTransaction().begin();
em.persist(vehicle);
em.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
}
}
对此没有完美的规则。
如果尽早但尽可能晚地捕获异常,代码通常会更清晰、更简单。
你应该考虑谁必须采取行动Exception
发生了,这决定了你是否catch
它在方法(addVehicle)内或者如果你throw
它使得调用者必须catch
it.
E.g:
public void addVehicle(Vehicle vehicle) throws SQLException{
em.getTransaction().begin();
em.persist(vehicle);
em.getTransaction().commit();
}
在此示例中,调用者必须捕获。
此外,仅在少数情况下您应该抓住Exception
or RunTimeException
, 更好的
捕获特定的异常,例如IOException
代替Exception
.
在代码中的某个地方,您将需要“最后一道防线”catch (Exception ex).
这是为了处理不应该发生的错误所必需的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)