A volte è necessario scrivere un costruttore che può fallire. Ad esempio, supponiamo di voler istanziare un oggetto con un percorso file, qualcosa di simile a
obj = new Object("/home/user/foo_file")
Se il percorso punta a un file appropriato, tutto va bene. Ma se la stringa non è un percorso valido, le cose dovrebbero rompersi. Ma come?
Potresti:
- genera un'eccezione
- restituisce oggetto nullo (se il tuo linguaggio di programmazione consente ai costruttori di restituire valori)
- restituisce un oggetto valido ma con un flag che indica che il suo percorso non è stato impostato correttamente (ugh)
- altri?
Suppongo che le "migliori pratiche" dei vari linguaggi di programmazione possano implementarlo diversamente. Per esempio penso che ObjC preferisca (2). Ma (2) sarebbe impossibile implementare in C ++ dove i costruttori devono avere il vuoto come tipo di ritorno. In tal caso, prendo quello che viene utilizzato (1).
Nel tuo linguaggio di programmazione di scelta puoi mostrare come gestirai questo problema e spiegherai perché?