java - 为什么我的程序停止运行并且不返回错误?

标签 java io while-loop

我将声明放在while循环中,程序不会运行,也不会返回任何错误。我怀疑 while 循环变成了无限循环。

                    try
                    {
                        while (true)
                        {
                            inputStream = new ObjectInputStream (new FileInputStream (fileName));
                            Ship copyObject = (Ship) inputStream.readObject();
                            String nameCompany = copyObject.getCompanyName();

                            if (compName.equalsIgnoreCase(nameCompany)){
                                listShipName += (copyObject.getShipName() + ", ");
                                numberOfShip ++;
                            }
                        }
                    }

                    catch (EOFException e)
                    {
                    }

                    catch (Exception e)
                    {
                    e.printStackTrace();
                    }

但是如果我将输入流的声明放在 while 循环之外,程序就会成功运行。有人可以解释为什么会发生这种情况吗?

                        try
                        {
                            inputStream = new ObjectInputStream (new FileInputStream (fileName));

                        }
                        catch (Exception e)
                        {
                            e.printStackTrace();
                        }
                        try
                        {
                            while (true)
                            {

                                Ship copyObject = (Ship) inputStream.readObject();
                                String nameCompany = copyObject.getCompanyName();

                                if (compName.equalsIgnoreCase(nameCompany)){
                                    listShipName += (copyObject.getShipName() + ", ");
                                    numberOfShip ++;
                                }
                            }
                        }

                        catch (EOFException e)
                        {
                        }

                        catch (Exception e)
                        {
                        e.printStackTrace();
                        }

最佳答案

您将在循环的每次迭代中重新打开文件,这意味着您只读取文件中的第一个对象。但你一遍又一遍地阅读同一个对象。

除了仅打开文件一次之外,您确实应该尝试检测文件末尾而不引发异常。作为一种风格问题,当出现问题时应该抛出异常,而不是理所当然的。

关于java - 为什么我的程序停止运行并且不返回错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26832777/

相关文章:

c++ - 如何强制刷新文件

java - jsp中无法访问jpg

java - 使用 model 属性传递的 Spring MVC 对象为空

python - 使用r+模式读写同一个文件

php - php while循环后输出停止

java - 循环变成无限循环

java - 谓词方法在是/否/否则回答不回答的情况下返回重复提示

javascript - GWT 应用程序自 Firefox 41 起无法运行

java - Hibernate 和 Servlet

haskell - IO monad 在 System.Random 中如何工作