java io捕获异常

java io捕获异常,java,exception,io,try-catch,Java,Exception,Io,Try Catch,我得到这个错误: bill value:$ 0.10 bill value: $0.05 bill value: $0.01 bill value: $100.00 Exception in thread "main" java.io.EOFException at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source) at java.io.ObjectInputStream.readObj

我得到这个错误:

bill value:$ 0.10
bill value: $0.05
bill value: $0.01
bill value: $100.00
Exception in thread "main" java.io.EOFException
    at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.readObject(Unknown Source)
    at ReadMoney.main(ReadMoney.java:12)
================== 我的代码:


我很确定我的try-and-catch块是正确的,但我的程序没有打印2/4的值,也没有出于某种奇怪的原因打印“已到达文件结尾”的文本

您正在捕获
IllegalBillException
(不管是什么),但是您没有捕获
EOFEException
(或者它是超类,
IOException
)。

您正在捕获
IllegalBillException
(不管是什么),但是您没有捕获
EOFEException
(或者它的超类,
IOException
).

问题在于,您的
while
条件(使用空检查测试EOF)不能“保护”“
}//try
”之后的内容,因此该点之后的
readObject
调用将尝试读取EOF之外的内容并获得异常

你需要以某种方式重组你的逻辑


捕获
EOFEException
将使异常“消失”,但不会修复您的错误。

问题在于,您的
while
条件(使用空检查测试EOF)不会“保护”“
}//try
”之后的内容,因此,在该点之后的
readObject
调用将尝试读取EOF之外的内容并获取异常

你需要以某种方式重组你的逻辑


捕获
EOFEException
将使异常“消失”,但不会修复您的错误。

文件的内容是什么?似乎它不包含你认为它是什么。你的文件的内容是什么?好像里面没有你想的东西。哦,我明白了,谢谢!我错过了另一个捕获声明!谢谢各位!哦,我明白了,谢谢!我错过了另一个捕获声明!谢谢各位!谢谢你的热舔!现在修好了!:)谢谢你的热舔!现在修好了!:)
//import java.util.Date;
public class ReadMoney
{
    public static void main(String argv[]) throws Exception
    {
        FileInputStream fis = new FileInputStream("money.out");
        ObjectInputStream ois = new ObjectInputStream(fis);
        Object read;
        try
        {
            while ((read = ois.readObject()) != null)
            {
                if (read instanceof Bill)
                {
                    System.out.println("bill value: " + read);
                }
                else if (read instanceof Quarter)
                {
                }// while
                else if (read instanceof Dime)
                {
                    System.out.println("bill value:" + read);
                }
                else if (read instanceof Nickel)
                {
                    System.out.println("bill value:" + read);
                }
                else if (read instanceof Penny)
                {
                    System.out.println("bill value:" + read);
                }
                else if (read instanceof Bill)
                {
                    System.out.println("bill value:" + read );
                }

            Money quarter = (Money) ois.readObject();
            System.out.println("Quarter: "+ quarter);
            System.out.println("Quarter: "+ quarter);
            Money dime = (Money) ois.readObject();
            System.out.println("Dime:" + dime);
            Money nickel = (Money)ois.readObject();
            System.out.println("Nickel:" + nickel);
            Money penny = (Money) ois.readObject();
            System.out.println("Penny:" + penny);
            Money bill = (Money) ois.readObject();
            System.out.println("Bill: " + bill);
        }// try
        } catch (IllegalBillException ibe)
        {
            System.out.println("End of file reached");
        }
        ois.close();
        fis.close();
    }// main
}// class