Bessere Lösung?

Scynja

Mitglied
Hallo nochmal=),

Java:
	try{																		///ist das nötig?		
	Synset[] synsets = database.getSynsets(searchterm, SynsetType.NOUN); 
    nounSynset = (NounSynset)(synsets[0]);
	}
	catch(Exception ex){
		return result;
	}
	Synset[] synsets = database.getSynsets(searchterm, SynsetType.NOUN); 
    nounSynset = (NounSynset)(synsets[0]);                                     /// ist das nötig?

dies ist diesmal ein Programmausschnitt, der funktioniert, allerdings ist mir die doppelte Definition ein Dorn im Auge. Rückgabewert ist vom typ Daten und am Ende wird diesem nounsSynset als Wert zugewiesen. Eclispe meint daraufhin, dass die Variable eventuell nicht initialisiert wurde, was sie aber rein logisch ist. Entweder das try funktioniert und sie ist initialisiert oder es wird abgebrochen und die variable wird nicht mehr benötigt.

Ziel der ganzen Aktion sollte es sein eine Fehlermeldung in der Konsole bei einer leeren Eingabe("") zu unterbinden. Die Fehlermeldung bringt das Programm zwar nicht zum Absturz, aber Fehler ist eben Fehler. Nur wenn ich deswegen jetzt passagen doppelt schreiben muss, kann ich auch die fehlermeldungen in der Konsole alle drinnenlassen oder? Was wäre die beste Lösung hierfür (am besten kein doppelter Quelltext und keine Fehlermeldung)
 
Wie wäre es mit
Java:
    Synset[] synsets = null;
    nounSynset = null;
	try{	
	    synsets = database.getSynsets(searchterm, SynsetType.NOUN); 
        nounSynset = (NounSynset)(synsets[0]);
	}
	catch(Exception ex){
		return result;
	}
?
 
Also Exceptions sind nicht da um den Programmfluss zu steuern, dafür nutzten wir If- Abfragen.

Da kannst du prüfen, ob die vorbedingungen zum Ausführen der Aktion gegeben sind.

Das was du hier im speziellen machst ist eher unsinnig.

Du versuchst etwas zu machen, dass eine Exception liefern kann.

Danach versuchst du es nochmal. Entweder es klappt, dann machst du es 2x.

Oder es klappt nicht, dann machst du es einmal ohne erfolg ;D
 
Stimmt die Variablen vorher mit null zu initiallisieren sieht schon gleich sauberer aus.

@Marcinek dessen war ich mir schon bewusst, deswegen habe ich ja hier die Frage gepostet. Bei if-Abfragen besteht das Problem, dass man in der Regel nicht die Vorbedingung testen kann ob etwas null ist.
Beispiel: If(LinkedList.getNext()!=null)... wenn ich es richtig in Erinnerung habe, kommt so immer eine Fehlermeldung, weil er in dem Moment schon versucht auf das Element zuzugreifen.

Und danke für die schnellen Antworten
 
Stimmt die Variablen vorher mit null zu initiallisieren sieht schon gleich sauberer aus.

@Marcinek dessen war ich mir schon bewusst, deswegen habe ich ja hier die Frage gepostet. Bei if-Abfragen besteht das Problem, dass man in der Regel nicht die Vorbedingung testen kann ob etwas null ist.
Beispiel: If(LinkedList.getNext()!=null)... wenn ich es richtig in Erinnerung habe, kommt so immer eine Fehlermeldung, weil er in dem Moment schon versucht auf das Element zuzugreifen.

Und danke für die schnellen Antworten

Na dann prüf doch auch vorher
Java:
if(list != null && list.getNext() != null) foo();

Er geht die Forderungen der Reihe nach von links nach rechts durch.
 

Zurück
Oben