java—为什么会抛出ioexception

7y4bm7vi  于 2021-07-08  发布在  Java
关注(0)|答案(2)|浏览(420)

此程序在没有名为“test object.to”的现有文件时运行。这个程序的输出是“io捕获”。为什么?

import java.io.*;

public class Test 
{
    public static void main (String [] args)
    {
        TestObject testObject = new TestObject("Test Object");

        try
        {
            saveTestObject(testObject);
        }
        catch (FileNotFoundException fnf)
        {
            System.out.println("FNF caught");
        }
        catch (IOException io)
        {
            System.out.println("IO caught");
        }
    }

    static void saveTestObject(TestObject to)  throws FileNotFoundException, IOException
    {
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(to.name + ".to"));
        oos.writeObject(to);
        oos.close();
    }
}

class TestObject
{
    String name;

    TestObject(String s)
    {
        name = s;
    }
}
0x6upsns

0x6upsns1#

首先,这并不是 FileNotFoundException ,因为根据文件, FileOutputStream 的构造函数将创建不存在的文件,而不是抛出错误。如果打印错误,将看到:

java.io.NotSerializableException: TestObject

同样,根据文件, writeObject 要求其论点 Serializable . 自 Serializable 只是一个标记接口,您可以实现它:

class TestObject implements Serializable

现在你的代码不会抛出任何错误。

tyu7yeag

tyu7yeag2#

好的,我现在看到testobject显然需要实现可序列化的

相关问题