gpt4 book ai didi

java - 抛出异常以指示未找到元素

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:13 24 4
gpt4 key购买 nike

在下面的代码中,如果在字符串列表中找不到元素,我将引发异常。

import java.util.ArrayList;
import java.util.List;

public class TestException {

private static List<String> strList = new ArrayList<String>();

static {
strList.add("1");
strList.add("2");
}
public static void main(String argsp[]) {

try {
String res = new TestException().findId("1");
System.out.println(res);
} catch (Exception e) {
e.printStackTrace();
}

try {
String res = new TestException().findId("11");
System.out.println(res);
} catch (Exception e) {
e.printStackTrace();
}

}

private String findId(String id) throws Exception {

for(String str : strList){
if(id.equalsIgnoreCase(str)){
return str;
}
}

throw new Exception("Exception Thrown - element not found");

}

}

当运行输出为:

1
java.lang.Exception: Exception Thrown - element not found
at com.fmr.fc.portlet.actionabledashboard.throttling.TestException.findId(TestException.java:40)
at com.fmr.fc.portlet.actionabledashboard.throttling.TestException.main(TestException.java:24)

为了在询问问题时保持较低的代码量,我抛出异常,但我将抛出自定义异常。我抛出异常的原因是自定义异常被进一步捕获到调用堆栈以指示错误。

但是以这种方式抛出异常是不是不好的做法 - 如果找不到 id,findId 会抛出异常?

最佳答案

是的,这是不好的做法。您应该编写一个传递 boolean 值的函数,并允许程序使用它来确定要做什么。

异常应该只用于处理非常罕见、完全不可避免的事件。它们不应该成为代码标准逻辑的一部分,它们是(惊讶!)规则的异常(exception)。事情可能(可能)发生,但可能性很小,而且你真的、真的找不到阻止它们的方法。

关于java - 抛出异常以指示未找到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26777650/

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