'Rückgabewert' von Constructor Exception in Java?

7

Sehen Sie sich folgendes Code-Snippet an:

%Vor%

Angenommen, der Konstruktor von A gibt eine Laufzeitausnahme aus. Erhalte ich an der markierten Zeile immer eine NullPointerException, oder wird foo () auf einer halb konstruierten Instanz aufgerufen?

    
Lajos Nagy 19.03.2010, 00:26
quelle

4 Antworten

12

Der Code innerhalb des Blocks try enthält zwei verschiedene Operationen:

  1. Erstellen Sie eine neue A -Instanz.
  2. Weisen Sie die neue Instanz einer Variablen namens a .
  3. zu

Wenn in Schritt 1 eine Ausnahme ausgelöst wird, wird Schritt 2 nicht ausgeführt.
Daher erhalten Sie immer NullPointerException .

    
SLaks 19.03.2010, 00:29
quelle
6

Wenn new A() eine Ausnahme auslöst, erhalten Sie immer eine NullPointerException, weil die Zuweisung zu a nicht erfolgt.

    
Phil Ross 19.03.2010 00:29
quelle
1

Ich denke, Sie würden immer eine NPE an der markierten Linie bekommen. Die Aufgabe hat niemals eine Chance.

    
slau 19.03.2010 00:32
quelle
1

Wenn die Ausnahme im Konstruktor auftrat, rufen Sie new A () auf. Zu diesem Zeitpunkt hat das Objekt null Wert. Also die a.foo () gibt die Nullzeiger-Ausnahme aus. Sie können die Bedingung wie folgt angeben (a! = null) { a.foo (); }

    
Arivu2020 19.03.2010 03:41
quelle

Tags und Links