Обработка исключений в переопределении методов в java
При обработке исключений известно, что если метод суперкласса не объявляет исключение, то переопределенный метод подкласса не может объявить проверенное исключение, но может объявить непроверенное исключение. Почему же так? рассмотрим следующий пример :
import java.io.*; class Parent{ void msg(){System.out.println("parent");} } class TestExceptionChild extends Parent{ void msg()throws IOException{ System.out.println("TestExceptionChild"); } public static void main(String args[]){ Parent p=new TestExceptionChild(); p.msg(); } }
Что я уже пробовал:
Здесь мы получаем ошибку компиляции. Если мне нужно прочитать файл в переопределенном методе "msg", то я должен упомянуть там "throws IOException". Но Java не позволит. Кто-нибудь может это объяснить?
Richard MacCutchan
Вы пытаетесь изменить сигнатуру метода msg, который не разрешен. Вам нужно поймать исключение в блоке вызовов дочернего метода.