Message d'erreur "exception non signalée java.io.IOException; doit être attrapé ou déclaré être jeté "
Erreur:
filecontent.java:15: non déclarée exception java.io.IOException; doit être
pris ou
déclaré être jetéshowfile();
^ filecontent.java:78: non déclarée exception java.io.IOException; doivent être pris ou déclarée
jetéshowfile();
^
J'ai déjà jeté java.io.IOException, mais encore il montre ces erreurs.
Mon code:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class filecontent extends Frame implements ActionListener
{
TextField t[] = new TextField[4];
TextArea ta[] = new TextArea[4];
Button submit;
Panel p1;
filecontent()
{
setGUI();
setRegister();
showfile();
setTitle("FileData");
setVisible(true);
setSize(300, 300);
/* addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
});
*/
}
void setGUI()
{
p1 = new Panel();
p1.setLayout(new GridLayout(5, 4, 10, 10));
for(int i=0; i<4; i++)
{
t[i] = new TextField(10);
ta[i] = new TextArea("");
p1.add(t[i]);
p1.add(ta[i]);
}
submit = new Button("Submit");
p1.add(submit);
}
void setRegister()
{
submit.addActionListener(this);
}
void showfile() throws java.io.IOException
{
FileReader fin[] = new FileReader[4];
FileReader fn;
// br[]=new BufferedReader[4];
for(int i=0;i<4;i++)
{
fin[i]=new FileReader(t[i].getText());
}
int cnt = 1;
String s;
fn = fin[0];
BufferedReader br = new BufferedReader(fn);
while(cnt <= 4)
{
if((s=br.readLine()) != null)
{
ta[cnt-1].append(s+"");
}
else
{
cnt++;
fn = fin[cnt-1];
ta[cnt-1].setText("");
}
}
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource()==submit)
{
showfile();
}
}
public static void main(String ar[])
{
new filecontent();
}
}
source d'informationauteur Akash Patel | 2012-01-03
Vous devez vous connecter pour publier un commentaire.
Votre
showfile()
méthode renvoieIOException
de sorte que chaque fois que vous l'utilisez, vous avez à les attraper cette exception ou encore thorw. Quelque chose comme:Vous devriez en apprendre davantage sur les exceptions en Java.
Le message d'erreur signifie que toute méthode qui appelle
showfile()
doit déclarer que ilà son tour, jetteIOException
ou l'appel doit être à l'intérieur d'untry
bloc de prisesIOException
. Lorsque vous appelezshowfile()
vous n'avez ni l'un ni l'; par exemple, votrefilecontent
constructeur ne déclareIOException
ni contient untry
bloc.L'intention est que certains de la méthode, quelque part, devrait contenir un
try
bloc, et de les attraper et de les gérer cette exception. Le compilateur essaie de vous forcer à gérer l'exception quelque part.Par ailleurs, ce code est (désolé d'être aussi franc) horrible. Vous ne fermez pas les fichiers que vous ouvrez, le
BufferedReader
toujours des points pour le premier fichier, même si vous semblez être d'essayer de faire le point à un autre, les boucles contiennent tout-en-un des erreurs qui sera la cause de diverses exceptions, etc. Lorsque vous ne obtenir ce pour compiler, il pas de travail comme vous le souhaitez. Je pense que vous avez besoin de ralentir un peu.Exceptions bulles haut de la pile. Si un client appelle une méthode qui renvoie un checked exception, comme IOException, il doit aussi attraper l'exception, ou même de le jeter.
Dans le cas du premier bloc:
Vous devez inclure un bloc try catch:
Dans le cas de la seconde:
Vous ne pouvez pas jeter IOException à partir de cette méthode que sa signature est déterminé par l'interface, de sorte que vous devez attraper l'exception de l'intérieur: le
Rappelez-vous, la showFile() la méthode est de lancer l'exception; c'est ce que le "jette" mot-clé indique que la méthode peut lever cette exception. Si le fichier de spectacle() la méthode est à jeter, alors ce code appelle la méthode doivent attraper, ou de se jeter à l'exception explicitement par le même throws IOException, outre la signature de la méthode, s'il est autorisé.
Si la méthode est remplacer une signature de la méthode définie dans une interface ou super-classe qui n'a pas aussi de déclarer que la méthode peut lever cette exception, vous ne pouvez pas déclarer de lever une exception.
Votre méthode showFile() déclare qu'il peut jeter une IOException. Puisque c'est un checked exception, tout appel à showFile() la méthode doit gérer l'exception d'une certaine manière. Une option consiste à encapsuler l'appel à showFile() dans un bloc try-catch.
Lorsque le destinataire de l'appel déclenche une exception c'est à dire vide showfile() throws java.io.IOException l'appelant doit le manipuler ou de le jeter à nouveau.
Et aussi apprendre les conventions de nommage. Un nom de classe doit commencer par une lettre majuscule.