gpt4 book ai didi

java - 在这种情况下如何正确处理异常?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:29:52 25 4
gpt4 key购买 nike

我有一个名为 Dictionary 的类,它从文本文件中读取固定长度分隔的单词,并从中创建一个 TreeSet 以查找单词是否存在于字典中。

所以我显然需要以某种方式处理 IOException。我的问题是,错误处理的责任应该落在 Dictionary 类身上,还是应该落在创建 Dictionary 对象的代码身上?

这是我所拥有的:

public class Dictionary
{
private final TreeSet<String> stringSet = new TreeSet<>();

// constructor
public Dictionary(String fileName) throws IOException
{
try (final Reader reader = new InputStreamReader(new FileInputStream(fileName)))
{
// load dictionary into stringSet
final char[] buffer = new char[4];
int numRead = -1;
while ((numRead = reader.read(buffer)) > 0)
stringSet.add(new String(buffer, 0, numRead).toUpperCase());
}
catch (IOException e)
{
throw e;
}
}

public boolean contains(String word)
{
return stringSet.contains(word);
}
}

创建字典对象的代码:

public class MainClass
{
public static void main(String args[])
{
String fileName = "C:/Users/Brandon/Desktop/Android Development/Practice Apps/SwapWords_Prototype/src/data/dictionary.txt";
try
{
Dictionary dict = new Dictionary(fileName);
}
catch (IOException e)
{
System.out.println("Could not load dictionary <" + fileName + ">");
e.printStackTrace();
}

// TODO handle dict
}
}

Dictionary 应该捕获并处理 IOException 还是将其扔给调用代码?我的意思是,两者都有效,但哪个更符合逻辑?

最佳答案

我会说您现在的设置方式很好。如果是这种情况,当 Dictionary 遇到 IOException 时,没有任何好的方法可以恢复它,那么您需要提醒调用者发生了此故障.另一方面,如果 Dictionary 可以自己优雅地处理错误(通过尝试加载不同的文件或其他东西),那么您可以将代码放在构造函数中以对调用者隐藏它.

您不希望调用者创建一个由于异常而在内部无效但对调用者来说看起来完全没问题的 Dictionary

关于java - 在这种情况下如何正确处理异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15724708/

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