Pourquoi suis-je hors d'Instruction d'erreur en Java?
Lorsque j'essaie de compiler ce programme, j'obtiens une "inaccessible déclaration" erreur à la ligne 21:
import java.util.*;
import java.io.*;
import java.nio.file.*;
import java.lang.StringBuilder;
class FilePrep {
public static void main(String args[]) {
}
public String getStringFromBuffer() {
try {
Path file = Paths.get("testfile2.txt");
FileInputStream fstream = new FileInputStream("testfile2.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String inputLine = null;
StringBuffer theText = new StringBuffer();
while((inputLine=br.readLine())!=null) {
theText.append(inputLine+" ");
}
return theText.toString();
System.out.println(theText); //<-- line 21
}
catch (Exception e)
{
System.err.println("Error: " + e.getMessage());
return null;
}
}
}
Le compilateur complet sortie:
Main.java:21: error: unreachable statement
System.out.println(theText);
^
Main.java:28: error: missing return statement
}
^
2 errors
Je pense la return
états sont dans les bons endroits...ils semblent être moins pour moi, et le programme semble si simple par rapport à celui que j'ai cloné à partir, que je vais avoir bien du mal à comprendre pourquoi cette déclaration est inaccessible.
Qu'ai-je fait de mal lors de la copie du code, et comment dois-je la corriger?
Vous devez vous connecter pour publier un commentaire.
Vous avez eu raison en supposant que votre problème est ici:
la
return
fonction mettre fin à votre méthode, ce qui signifie qu'aucune ligne de code passé, il sera exécuté.Si vous voulez que votre impression de passer à travers, vous devez déplacer au-dessus de l'instruction return.
return
dans le cas où les données nécessaires pour êtrereturn
ed pour leprintln
pour y accéder....d'autres idées?Vous avez une déclaration à l'issue de l'instruction return.
Voici les deux délinquance lignes:
Les passer autour de.
Lorsque le
return
instruction est exécutée, la méthode de céder le contrôle à son appelant. C'est pourquoi leprintln
ne sera pas exécuté; c'est pourquoi le compilateur se plaint.Inaccessible déclarations sont certaines et d'indicateurs fiables d'une erreur de logique dans votre programme. Cela signifie que vous mettre dans des états qui ne sera pas exécuté, mais l'on suppose qu'ils le seraient. Le compilateur analyse la circulation, et les rapports de ces déclarations à vous que des messages d'erreur.
L'impression déclaration intervient après une retour déclaration. La fonction sera toujours quitter avant qu'il arrive à l'instruction print. "Inaccessible"
Changer l'ordre de la deux lignes autour et il va fonctionner.
La
return
déclaration doit toujours être à la fin ou à la dernière ligne de la définition de bloc. Si vous gardez toutes les instructions après lareturn
déclaration de ces déclarations sont inaccessibles relevés par le contrôleur. En utilisantreturn
déclaration que nous disons de contrôle devrait revenir à son appelant explicitement.Par exemple
Dans cet exemple, nous obtenons erreur de compilation comme
unreachable code
parce que le contrôle ne peut pas arriver à la dernière déclaration pour l'exécution.Donc, toujours
return
déclaration devrait être la dernière instruction d'un bloc de définition.