Konstruktor in Methode fremder Klasse: try-catch-Problem

Status
Nicht offen für weitere Antworten.

HeBr

Mitglied
Hallo zusammen,

würde mich freuen, wenn mir wieder mal jemand weiterhelfen könnte.

Rufe in einer Klasse "Crossing" in einer Methode "Indivudual_Bring cross_half_half(father, mother)" den Konstruktor aus der Klasse "Indivudual_Bring" auf. Dieser Konstruktor initialisert das Objekt vollständig mit Anfangsbelegungen. Diesen Konstruktor kann ich aber wiederum nur mit einem try-catch-Block aufrufen, weil bei der Ausführung des Konstruktors eine .txt Datei geöffnet werden muss, die Werte für den Konstruktor enthält.
Dummerweise habe ich jetzt festgestellt, dass dieser try-catch Block ein Problem darstellt, weil nur versucht wird, dass ein Objekt erzeugt wird. Möchte ich in meiner Methode "Indivudual_Bring cross_half_half(father, mother)" den Konstruktor aufrufen, der das Objekt "child" vom Typ "Individual_Bring" erzeugt und der gleichzeitig in einen try-catch-Block eingebettet ist, kann ich mit dem Objekt "child" nicht arbeiten, weil der Compiler bemängelt: "The local variable child may not have been initialized".

Eine Idee war, dass ich schon im Konstruktor mittels try-catch versuche die Exception beim Auslesen der Datei abzufangen, dann kann ich allerdings im Konstruktor nicht mehr mit der Variable arbeiten, der der Wert in der Datei zugewiesen wird - also eigentlich dasselbe Problem in grün.

Kann mit jemand weiterhelfen? Was könnte ich besser machen?

Gruß & Dank

HeBr
 
Zuersteinmal würde ich die Methode umbenennen, da kriegst du ja nen Schreibkrampf bei. Deklarier das Objekt (mit null Zuweisung) - führe deine Operatiionen aus, gib das Objekt zurück.

Wenn was schief ging wird die null Referenz zurückgegeben .....
 
Hallo mic_checker,

danke für die Antwort. Weiss gerade nicht, wo ich die Nullzuweisung machen soll?

Code:
    static Individual_Bring cross_half_half(Individual_Bring father, Individual_Bring mother){
        
        Individual_Bring child;
        try{
            child = new Individual_Bring();
        }
        catch (IOException io){
            io.printStackTrace();
        }
        .
        .
        .
        return child;

Poste bitte nochmal rein.

Der Methodennamen ist doch gar nicht so schlimm, solltest mal sehen, welche ich noch alles habe;-)

Danke

HeBr
 
Code:
Individual_Bring child = null;

Der ist nicht schlimm? Ich will doch keinen Augenkrebs kriegen wenn ich auf Code gucke 😉
 
Klasse, funktioniert!
Eigentlich ganz logisch...
Danke.

Nicht vergessen, immer die Böse-Code-lies-Brille aufsetzen, hilft vor bleibenden Schäden 8)
Bis dann!

HeBr
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben