gpt4 book ai didi

java - Try/Catch 内部或外部函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:02:50 26 4
gpt4 key购买 nike

我有一个关于使用 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();
}

在这个例子中,调用者必须捕捉。
此外,只有在少数情况下你应该捕获 ExceptionRunTimeException,更好 捕获特定异常,例如 IOException 而不是 Exception

在您的代码中的某处,您将需要一道“最后一道防线”,以便catch (Exception ex)。这是处理不应发生的错误所必需的。

关于java - Try/Catch 内部或外部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14222121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com