gpt4 book ai didi

java - 重试代码块后引发异常

转载 作者:行者123 更新时间:2023-12-01 21:57:29 26 4
gpt4 key购买 nike

成功重试后抛出异常是否正确、安全且理智?此示例违反了哪条编程原则?

class B {
private int total;

public void add(int amount) throws Exception {
if (amount < 0) {
throw new Exception("Amount is negative");
}
total += amount;
}
}

class A {
public B b = new B();

public void addToB(int amount) throws Exception {
try {
b.add(amount);
} catch (Exception ex) {
try {
b.add(-amount);
} catch (Exception ex2) {
}
throw new Exception("Amount was negative. It was inverted and then added.");
}

}
}

最佳答案

您的代码正在工作,但由于您正在调用addToB()方法,该方法在catch block 内抛出异常 code> 您必须在 try-catch block 内实现另一个 try-catch block 。最后,即使有这么多 try-catch block ,您也会抛出异常,这不好,因为如果不处理异常,可能会发生异常。导致问题以及如果方法成功抛出异常的非常糟糕的实践。我发现您需要用户知道方法内部发生了什么,您可以从返回一个字符串方法,它会告诉用户方法内部发生了什么

例如:-

public String addToB(int amount){
String msg = "";
try{
b.add(amount);
msg ="successful";
}catch(Exception ex){
try{
b.add(-amount);
}catch(Exception ex2){
}
msg= "Amount was negative. It was inverted and then added.";
}
return msg;
}

即使这不是最佳实践,但您可能需要检查一下。

关于java - 重试代码块后引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36732971/

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