FileNotFoundException is never thrown

nieselfriem

Bekanntes Mitglied
Hallo!

Ich experiementiere ein wenig mit XML herum. Dabei dachte ich schon ein wenig mit Exceptions umgehen zu können. Aber wohl weit gefehlt

Ich habe folgenden Quelltext
Java:
 import org.w3c.dom.*;
 import org.xml.sax.*;
 import javax.xml.parsers.*;
 import java.io.*;

public class DomXMLReader {
	
	private DocumentBuilder parser = null;
	
    public DomXMLReader() throws ParserConfigurationException {
    	DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
    	parser = fac.newDocumentBuilder();
    }
    
    public void read(File f) {
    	try {
    		Document doc = parser.parse(f);
    		analyse(doc);
    		
    	}catch(SAXException e) {
    		e.printStackTrace();
    	}catch(Exception e) {
    		e.printStackTrace();
    	}
    }//read
    
    public void analyse(Node node) {
    	//Wenn um einen Textknoten handelt, Inhalt ausgeben
    	if(node!=null && node.getNodeType() == Node.TEXT_NODE) {
    		String value=node.getNodeValue().trim();
    		
    		if (value.length() > 0) {
    			System.out.println("Der Wert des Knoten ist: "+value);
    		}
    	}else {
    		System.out.println("Gefundenes Element: "+node.getNodeName());
    		
    		//Überprüfen, ob untergeordnete Knoten existieren
    		if(node.hasChildNodes()) {
    			int num = node.getChildNodes().getLength();
    	    	        for(int i=0; i<num;i++) {
    			   analyse(node.getChildNodes().item(i));
    		   }//for
    	  	}//if
    	}//else
    	
    }//analyse
    
    public static void main(String[] argv) {
    	try {
    		File datei = new File("bewerberliste.xml");
    		DomXMLReader dxmlr = new DomXMLReader();
    //	InputSource input = new InputSource(new StringReader("bewerberliste.xml"));
    	dxmlr.read(datei);
    	}catch(FileNotFoundException fnf) {//Fehler
    		fnf.printStackTrace();
    	}catch (ParserConfigurationException ex) {
    		ex.printStackTrace();
    	}
    }
 }//class
In der Main kommt es dann aber zu Problemen zwischen der ParserExcepion und der FileNotFoundExcepion. Ich dachte, die könnte ich einfach hintereinander abfangen. Das klappt leider nicht. Was mache ich falsch.

Gruß niesel
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Was meinst du mit "nacheinander abarbeiten"?
Sobald in dem try-block eine Exception geworfen wird, wird der erstpassende catch block ausgeführt. Nacheinander wird nichts ausgeführt.

EDIT:
hab grad den Titel erst gelesen :)
Das Problem ist dass du in der read() Methode schon jede Exception behandelst (catch (Exception e)). Sobald eine Exception behandelt wurde wird die nicht weiter nach oben gereicht.
 
Zuletzt bearbeitet von einem Moderator:

VfL_Freak

Top Contributor
Moin,

nacheinander abfangen ist auch kein Problem sein!
Aber die Fehlermeldung deutet darauf hin, dass Du hier versuchst eine Exception abzufangen, da gar nicht geworfen werden kann, da Deine Klasse DomXMLReader IMHO gar keine FileNotFoundException wirft.

Du könntest mal versuchen, in der main keine expliziten Exceptions einzeln anzufangen, sondern nur pauschal, so wie in der Methode read()
Java:
...
catch(Exception e) 
{
     e.printStackTrace();
}

Gruß
Klaus
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben