Spójrz że poniższym fragmencie kodu:"zwracana wartość" z wyjątku Konstruktora w Javie?
A a = null
try {
a = new A();
} finally {
a.foo(); // What happens at this point?
}
Załóżmy konstruktora rzuca wyjątek czasu wykonywania. Czy w zaznaczonym wierszu zawsze mam zagwarantowany wyjątek NullPointerException, czy też foo() zostanie wywołany na częściowo skonstruowanej instancji?
Dlatego napisz jako "final A a = new A(); spróbuj {...} wreszcie {a.foo(); } '. A jeśli potrzebuje wyjątku złapanego, dodaj ** inny ** blok próbny dookoła. –
lub jeśli nie jesteś pewien stanu odwołania 'a' w bloku finally, po prostu owinąć' a.foo() '' (jeśli a! = Null) –