假设我有一个存储学生姓名的文本文件和存储其成绩的另一个文本文件,我正在尝试将这些文件整合到一个文本文件中(或者可能正在进行其他处理)。进一步说我写一个提供迭代器的类,它基本上抽象出数据存储在两个单独文件中的事实。这个迭代器有这样的方法:
public class MyIterator
{
public boolean hasNext()
{
boolean a = this.nameReader.hasNext();
boolean b = this.gradeReader.hasNext();
if (a != b)
{
// the number of records in the two files don't match;
// most likely input is wrong and user should be alerted about it
// **Question: What exception should I throw here?**
}
return a;
}
public MyTuple next()
{
// read the next records from both files and
// combine them into a tuple
}
}
Java有IllegalStateException
,但其描述与此处的问题不符。
IllegalStateException
:
表示在非法或不适当的时间调用了方法。换句话说,Java环境或Java应用程序未处于所请求操作的适当状态。
答案 0 :(得分:0)
href='mailto:[email]'
是抛出的一个很好的例外,但如果它不能满足您的需求,您总是可以创建自己的异常。请记住,您并不总是希望向公众显示异常结果,因此您可能希望在记录异常结果时以不同方式处理该异常。
答案 1 :(得分:0)
鉴于您正在实现接口的方法,并且该方法不会抛出任何已检查的异常,因此您仅限于RuntimeException
的子类。
如果现有的子类都不适合您的情况,您可以随时创建自己的子类,但通常不建议对未经检查的异常(因为它们不会自动出现在JavaDoc中)。记录你为自己的班级投入JavaDoc的任何内容都很重要。
如果我要求为您所描述的情况选择现有的运行时例外,我可以选择UncheckedIOException
围绕EOFException
。