Java: Ausnahme im Konstruktor, kann mein Objekt noch erstellt werden?

7

Könnten Sie mir sagen, dass es einen Fall geben kann, in dem die Ausnahme den Konstruktor anruft und das Objekt nicht null ist? Ich meine, dass ein Teil des Objekts erstellt wird und ein anderes nicht. Wie das

%Vor%

Ich verstehe in diesem Sitiation-Objekt Test wird Null sein, aber kann Situation sein, dass Objekttest nicht null sein kann (Löschblock Ausnahme nicht beantworten :))?

    
jitm 06.05.2011, 10:04
quelle

4 Antworten

19

Ein Klassenexemplar-Erstellungsausdruck erstellt immer ein neues Objekt, wenn die Auswertung seines Qualifikationsmerkmals und seiner Argumente normal abgeschlossen wird und genügend Platz zum Erstellen des Objekts vorhanden ist. Es spielt keine Rolle, ob der Konstruktor eine Ausnahme auslöst. Ein Objekt wird noch erstellt. Der Klassenexemplar-Erstellungsausdruck wird in diesem Fall jedoch nicht normal ausgeführt, da er die Ausnahme weitergibt.

Sie können jedoch immer noch einen Verweis auf das neue Objekt erhalten. Berücksichtigen Sie Folgendes:

%Vor%

Hier wird eine Referenz auf das neue Objekt an anderer Stelle gespeichert, bevor die Ausnahme ausgelöst wird. Wenn Sie dieses Programm ausführen, sehen Sie, dass das Objekt tatsächlich nicht null ist, obwohl sein Konstruktor nicht normal beendet wurde.

    
Nathan Ryan 06.05.2011, 10:32
quelle
4

Nein. Sehen Sie sich den Client-Code an:

%Vor%

Hier, wenn eine Ausnahme auftritt, wird die '=' Operation nicht ausgeführt. Ihr Code geht direkt in den catch-Block und myObj bleibt null .

    
Vladimir Ivanov 06.05.2011 10:08
quelle
2

Nein. Wenn während der Instanziierung des Objekts eine Ausnahme auftritt, wird diese nicht erstellt.

Wie auch immer, würdest du es schreiben?

%Vor%

oder:

%Vor%     
romaintaz 06.05.2011 10:07
quelle
-1
%Vor%

Der obige Code ist nach unserer Erwartung sinnvoll.

    
Pazhamalai G 06.05.2011 10:33
quelle

Tags und Links