Добрый день.
Ну, во-первых, вы можете использовать try-with-resources вместо try-catch.
Во-вторых, стрим гораздо лучше закрывать в finally блоке, если решили все же использовать try catch
В-третьих, лучше писать в логи те эксепшены FileNotFoundException и IOException
В-четвертых, вы закрываете ObjectInputStream, но не FileInputStream (а надо бы)
Теперь, по существу - предположу, что вы Contact contact = new Contact("", "", "", 0);
Можно гораздо лучше написать данный участок кода. Например, считывать данные и если null, то используя класс Optional создавать новый пустой объект (или не создавать вовсе).
Было бы неплохо, выложить содержимое вашего файла Contact.txt, чтобы иметь представление о том, как именно хранятся данные в файле. Как вы его читаете. Нужно ли их как-то разделять и т.д.