2017-08-06 6 views
-5

Ich renne in einen Fehler einer nicht portierten FileNotFoundException beim Versuch, ein Objekt mit einer Datei in meinem Testcode zu instanziieren. Die Klasse, die ich benutze/erstellt habe, hat die FileNotFoundException im Konstruktor (nur ein Konstruktor), deshalb bin ich nicht ganz sicher, warum ich nach einem zusätzlichen FileNotFound gefragt werde, wenn ich ein Objekt deklariere.FileNotFoundException nicht gemeldet

//Constructor 
    public readFile(File file)throws FileNotFoundException { 
    //do i need to create a file object here? 
      Scanner inScanFile = new Scanner(file); 
     } 

    ///////////Running Code from JUNIT below////////////// 
     public void Empty(){ 
      File testFile = new File("HARRY_POTTER_TRIVIA.txt"); 
      ReadingClass newReadtest = new ReadingClass(testFile); //Error occurs here 
+1

Hmm ... welcher Teil von "Datei nicht gefunden" verstehst du nicht? – JohnG

+0

'Scanner inScanFile = neuer Scanner (Datei);' versucht, die Datei am absoluten Pfad zu finden, aber diese Datei existiert nicht, also löst sie eine Ausnahme aus. –

+0

Wenn in der Klasse eine FileNotFoundException auftritt, warum erhalte ich eine nicht gemeldete Ausnahme, um eine zusätzliche FileNotFoundException einzubeziehen, wenn ich ein Objekt unter Verwendung dieser Klasse instanziiere. – samgrey

Antwort

0
public readFile(File file)throws FileNotFoundException { 
//do i need to create a file object here? 

Nein, warum? Du hast schon eins.

 Scanner inScanFile = new Scanner(file); 

Dies kann FileNotFoundException, werfen, weshalb dieser Konstruktor entweder hat es zu fangen oder zu erklären, dass er es, oder einer ihrer Basisklassen führt.

} 

///////////Running Code from JUNIT below////////////// 
    public void Empty(){ 
     File testFile = new File("HARRY_POTTER_TRIVIA.txt"); 
     ReadingClass newReadtest = new ReadingClass(testFile); //Error occurs here 

Das ist, weil readFile()FileNotFoundException werfen kann, so, wieder, haben Sie es entweder zu fangen oder zu erklären, dass Sie es werfen, oder eine ihrer Basisklassen.

+0

Das macht mehr Sinn, aber ich sehe nicht, wie die readFile() eine Ausnahme auslösen kann, die nicht vom Konstruktor abgefangen werden würde. Wenn Sie ein Dateiobjekt für eine Datei erstellen, die nicht existiert, kompiliert java immer noch. – samgrey

Verwandte Themen