В Java, как у меня есть класс, который реализует MouseListener и выдает IOException? - PullRequest
1 голос
/ 24 ноября 2011

Исключения IOException для ввода из файла.

Ответы [ 3 ]

4 голосов
/ 24 ноября 2011

как то так:

import java.awt.event.*;
import java.io.*;
class Foo implements MouseListener {
    void io() throws IOException {
        File file = new File("foo");
        FileReader fileReader = new FileReader(file);
        fileReader.read();
        // ...
    }
    @Override public void mouseClicked(MouseEvent arg0) {
        try {
            io();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    @Override public void mouseEntered(MouseEvent arg0) {}
    @Override public void mouseExited(MouseEvent arg0) {}
    @Override public void mousePressed(MouseEvent arg0) {}
    @Override public void mouseReleased(MouseEvent arg0) {}
}
2 голосов
/ 24 ноября 2011

Классы не генерируют исключения, методы делают.

public class Foo implements MouseListener {
    public void throwingUp() throws IOException {
        // ... Code that could throw IOE
    }
    // ... MouseListener impl
}
0 голосов
/ 24 ноября 2011

Классы не генерируют IOException, методы делают. Ваш класс может реализовать MouseListener, но эти методы (mouseClicked, mousePressed и т. Д.) Не могут генерировать исключения IOException. Вы должны будете обернуть их в RuntimeException (или подкласс). например,

   @Override
   public void mouseEntered(MouseEvent e) {
      try {
         methodThatMightThrowAnIOException();
      }
      catch (IOException ioe)
      {
         throw new RuntimeException(ioe);
      }
   }

Другие методы, такие как methodThatMightThrowAnIOException(), могут генерировать исключения IOException.

...