处理 SealedObject 时出现 EOFException 运行时错误
EOFException Runtime Error while dealing with SealedObject
我目前正在试验对象的加密和解密,但每次声明我的读取方法时我都会遇到 EOFException。我觉得我的代码中有很多冗余试图处理所有异常,所以如果你能告诉我要删除哪些 catch/throw 短语以及我如何解决这个问题,那就太好了。谢谢
java.io.EOFException 指向我代码中带有 (** **) 的行。所有其他行都是 NetBeans 生成的代码。
public static void readFromBinary() throws IllegalBlockSizeException, EOFException
{
try {
BufferedReader br3 = new BufferedReader(new FileReader(noteFileName));
if (br3.readLine() != null) {
FileInputStream fINoteStream = new FileInputStream(noteFileName);
ObjectInputStream oINoteStream = new ObjectInputStream(fINoteStream);
while(true){
try{
**SealedObject sObj = (SealedObject)oINoteStream.readObject();**
Note note = (Note) sObj.getObject(new NullCipher());
noteList.add(note);
}
catch(EOFException e){
e.printStackTrace();
break;
}
catch (IllegalBlockSizeException e){
e.printStackTrace();
break;
}
catch (BadPaddingException e){
e.printStackTrace();
break;
}
catch (ClassNotFoundException e){
e.printStackTrace();
break;
}
}
oINoteStream.close();
}
}
catch (FileNotFoundException e){
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}
}
}
另一个方法调用class:
try{
DataStorage.readFromBinary();
}
catch (IllegalBlockSizeException e)
{
e.printStackTrace();
}
catch (EOFException e)
{
e.printStackTrace();
}
EOFException
只是意味着你到达了输入的末尾。您需要关闭 inout 并跳出循环。您不需要打印堆栈跟踪。它与 SealedObject
没有任何关系,只是与对象流的工作方式有关。
您需要决定是捕获这个异常还是抛出它。你不应该两者都做。
我目前正在试验对象的加密和解密,但每次声明我的读取方法时我都会遇到 EOFException。我觉得我的代码中有很多冗余试图处理所有异常,所以如果你能告诉我要删除哪些 catch/throw 短语以及我如何解决这个问题,那就太好了。谢谢
java.io.EOFException 指向我代码中带有 (** **) 的行。所有其他行都是 NetBeans 生成的代码。
public static void readFromBinary() throws IllegalBlockSizeException, EOFException
{
try {
BufferedReader br3 = new BufferedReader(new FileReader(noteFileName));
if (br3.readLine() != null) {
FileInputStream fINoteStream = new FileInputStream(noteFileName);
ObjectInputStream oINoteStream = new ObjectInputStream(fINoteStream);
while(true){
try{
**SealedObject sObj = (SealedObject)oINoteStream.readObject();**
Note note = (Note) sObj.getObject(new NullCipher());
noteList.add(note);
}
catch(EOFException e){
e.printStackTrace();
break;
}
catch (IllegalBlockSizeException e){
e.printStackTrace();
break;
}
catch (BadPaddingException e){
e.printStackTrace();
break;
}
catch (ClassNotFoundException e){
e.printStackTrace();
break;
}
}
oINoteStream.close();
}
}
catch (FileNotFoundException e){
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}
}
}
另一个方法调用class:
try{
DataStorage.readFromBinary();
}
catch (IllegalBlockSizeException e)
{
e.printStackTrace();
}
catch (EOFException e)
{
e.printStackTrace();
}
EOFException
只是意味着你到达了输入的末尾。您需要关闭 inout 并跳出循环。您不需要打印堆栈跟踪。它与 SealedObject
没有任何关系,只是与对象流的工作方式有关。
您需要决定是捕获这个异常还是抛出它。你不应该两者都做。