Wie flashpixx schon sagte: Wenn hier der Klasse-Konstruktor eine Exception wirft, kommt es nie zum Aufruf von test().
Exceptions sind genau dafür da, damit du deinen Code nicht mehr mit solchen Prüfung zupflastern musst.
new gibt niemals NULL zurück. new wirft eine Exception, wenn nicht genug Speicher da ist.
Das ist C-Style, genau wie die Nullinitialisierung mit nachfolgender Neuzuweisung.
Das ist doch das Schöne an Exceptions: Wenn der Konstruktor ordentlich implementiert ist, also eine Exception wirft, wenn was nicht klappt, dann kannst du, wenn das Programm nach diesem new weiterläuft, davon ausgehen, dass alles geklappt hat. Es war genug Speicher da, und das Objekt konnte fehlerfrei erstellt werden. Du brauchst an dieser Stelle dann keine Gültigkeitsprüfung.
Ein sauber aufgezogenes C++-Programm sieht immer ein wenig aus wie "Schönwetterprogrammierung". Man geht davon aus, dass alles klappt. Wenn was nicht klappt, fliegt eine Exception, die an geeigneter Stelle behandelt wird. Exceptions bieten die Möglichkeit, die Fehlerbehandlung von der Programmlogik zu trennen. Ansonsten gibt das einen heillosen Mischmasch aus Code, der etwas tut, und Code, der nur dazu da ist, zu prüfen, ob alles geklappt hat.