我有一个关于使用 try
/catch
的最佳实践的非常基本的问题。
我有一个像这样的简单函数 (DAO):
public void addVehicle(Vehicle vehicle) {
em.getTransaction().begin();
em.persist(vehicle);
em.getTransaction().commit();
}
并在网络服务中使用 DAO 功能:
@WebMethod(operationName = "addVehicle")
public void addVehicle(Vehicle vehicle) {
try {
vehicleDAO.addVehicle(vehicle);
System.out.print("Vehicle added");
} catch (Exception e) {
e.printStackTrace();
}
}
OR 在 DAO 函数中使用 try
/catch
会更好,如下所示:
public void addVehicle(Vehicle vehicle) {
try {
em.getTransaction().begin();
em.persist(vehicle);
em.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
}
}
最佳答案
没有完美的规则。
如果尽早捕获异常,但越晚越好,代码通常会更清晰、更简单。
你应该考虑当 Exception
发生时谁必须采取行动,这决定了你是在方法 (addVehicle) 中 catch
还是 throw
它使得调用者必须捕获
它。
例如:
public void addVehicle(Vehicle vehicle) throws SQLException{
em.getTransaction().begin();
em.persist(vehicle);
em.getTransaction().commit();
}
在这个例子中,调用者必须捕捉。
此外,只有在少数情况下你应该捕获 Exception
或 RunTimeException
,更好
捕获特定异常,例如 IOException
而不是 Exception
。
在您的代码中的某处,您将需要一道“最后一道防线”,以便catch (Exception ex)。
这是处理不应发生的错误所必需的。
关于java - Try/Catch 内部或外部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14222121/