| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > unreported exception java.io.IOException |
| Автор: Elene 11.11.2004, 20:00 | ||||||
| Подскажите, пожалуйста, как решить проблему с unreported exception java.io.IOException. Есть класс:
В нем есть методы для инициализации каждого члена, которые сами по себе прекрасно справляются со своей задачей. Привожу первый:
Есть второй класс, который использует GUI, в котором есть объект класса Bdd, и в котором есть меню, кликнув на JMenuItem, которого я должна вызвать ту самую описанную выше методу lireBddsFabr(String nomFichierFab):
Вот тут-то на строчке bdDonnees.lireBddsFabr(nomFichier); и появляется: unreported exception java.io.IOException; must be caught or declared to be thrown bdDonnees.lireBddsFabr(nomFichier); А я совершенно не понимаю, что я должна исправить. Объясните, пожалуйста. |
| Автор: LSD 11.11.2004, 20:09 | ||||
| Это ошибка времени компиляции, которая возникает когда компилятор обнаруживает возможность возникновения "контролируемых" ошибок в коде, и не находит обработчик для данной ошибки или декларирования возможности ее возникновения. В данной ситуации есть два варианта: 1) окружить bdDonnees.lireBddsFabr(nomFichier); try...catch
2) декларировать ошибку как "кидаемую"
|
| Автор: Elene 11.11.2004, 20:16 |
| Спасибо. |
| Автор: Domestic Cat 11.11.2004, 20:17 | ||
actionPerformed не можеt бросать иксепшн, поскольку метод, который делает оверрайд метода суперкласса (интерфейса) ne mожет бросать иксепшны, не объявленныe при декларации методa суперкласса. |
| Автор: LSD 11.11.2004, 20:24 |
| Значит пункт 2 вычеркиваем |
| Автор: Elene 11.11.2004, 20:35 |
| Только теперь я получила еще более страшную ошибку: actionPerformed(java.awt.event.ActionEvent) in Tp21 cannot implement actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener; overridden method does not throw java.io.IOException public class Tp21 extends JFrame implements ActionListener ^ Как дальше быть? Добавлено @ 20:36 Ура!!! Я вычеркнула и все заработало. Большое спасибо!!! |
| Автор: Domestic Cat 11.11.2004, 20:39 |
| этo был второй способ kоторый не сработал |
| Автор: Elene 11.11.2004, 20:58 |
| Кажется, я рано порадовалась. Это оно откомпелировалось без ошибки, а вот когда я решила все это запустить, т.е. на кнопочку кликнуть в меню, получилось вот что: Exception occurred during event dispatching: java.lang.NullPointerException at Tp2.actionPerformed(Tp2.java:191) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:14 45) at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Abstra ctButton.java:1499) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel .java:373) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:245 ) at javax.swing.AbstractButton.doClick(AbstractButton.java:274) at javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseRelease d(BasicMenuItemUI.java:882) at java.awt.Component.processMouseEvent(Component.java:3710) at java.awt.Component.processEvent(Component.java:3539) at java.awt.Container.processEvent(Container.java:1159) at java.awt.Component.dispatchEventImpl(Component.java:2588) at java.awt.Container.dispatchEventImpl(Container.java:1208) at java.awt.Component.dispatchEvent(Component.java:2492) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451 ) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125) at java.awt.Container.dispatchEventImpl(Container.java:1195) at java.awt.Window.dispatchEventImpl(Window.java:923) at java.awt.Component.dispatchEvent(Component.java:2492) at java.awt.EventQueue.dispatchEvent(EventQueue.java:334) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh read.java:126) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre ad.java:93) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:88) at java.awt.EventDispatchThread.run(EventDispatchThread.java:80) Что это все значит, и откуда может взяться NullPointerException, если я его уже отловила в самой функции? |
| Автор: Domestic Cat 11.11.2004, 21:11 |
| А что в строкe 191? |
| Автор: Elene 11.11.2004, 21:15 | ||
| Как раз bdDonnees.lireBddsFabr(nomFichier); Добавлено @ 21:16 На nomFichier я сделала вывод, он не пустой, а с названием файла, который надо считать. Добавлено @ 21:22 Даже я сделала на прямую загрузку файла без FileDialog, т.е.
Все тот же NullPointerException. Не могу понять, как это может быть. Может быть у меня в самом методе что-то напутано? |
| Автор: Domestic Cat 11.11.2004, 21:24 |
| Проверь, можet bdDonnees == null. Если неt, зaпостi код lireBddsFabr() |
| Автор: LSD 11.11.2004, 21:35 |
| bdDonnees определенно null. |
| Автор: Elene 11.11.2004, 21:36 |
| Да, действительно, так и было. Я ее обявила в мемберах, как private Bdd bdDonnees; , а в конструкторе написала: Bdd bdDonnees = new Bdd(); вместо bdDonnees = new Bdd(); Отсюда и NullPointerException. Огромное спасибо. Я сама бы никогда не догадалась, где "собака зарыта". Сейчас все отлично работает, можно сказать, благодаря Вам. |