Не согу понять почему вывод сообщения на экран:
System.out.println("После метода write");
Происходит после вывода на экран ошибки из метода readObject(),
хотя System.out.println("После метода write") вызывается ранее
Слава
23 уровень
Объясните пожалуйста
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #2322530
24 сентября 2020, 11:14
почему ты решил что ошибка именно из метода readObject?
0
Слава
24 сентября 2020, 14:01
Ниже вывод в консоль, 42 строчка это вызов метода readObject() :
java.io.NotSerializableException
at com.javarush.task.task20.task2021.Solution$SubSolution.readObject(Solution.java:22)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1160)
at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2271)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2142)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1646)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:464)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:422)
at com.javarush.task.task20.task2021.Solution.main(Solution.java:42)
После метода write
0
hidden #2322530
24 сентября 2020, 14:06
потому что это еще на этапе компиляции происходит. убери обработку исключение, и у тебя программа вообще не скомпилируется.
JVM при компиляции проверяет что ты аргументом передаешь правильный объект. видит что ты передаешь неСериализуемый, и сразу выбрасывает исключение.
но так как ты сообщение обрабатываешь, у тебя программа не завершается.
0