此程序在没有名为“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;
}
}
2条答案
按热度按时间0x6upsns1#
首先,这并不是
FileNotFoundException
,因为根据文件,FileOutputStream
的构造函数将创建不存在的文件,而不是抛出错误。如果打印错误,将看到:同样,根据文件,
writeObject
要求其论点Serializable
. 自Serializable
只是一个标记接口,您可以实现它:现在你的代码不会抛出任何错误。
tyu7yeag2#
好的,我现在看到testobject显然需要实现可序列化的