allora, il concetto e' semplice ...
ti serve non creare il metodo ?
metti throw sul costruttore ma ovviamente devi verificare cosa ti e' possibile fare prima di farlo e di inviare eventualmente l' Exception ... non puoi puntare tutto sul distruttore ... il distruttore serve solo se la variabile / oggetto esiste
per esempio prima di fare operazioni di scrittura verifichi che il file sia scrivibile e/o creabile e in caso contrario invii l' eccezione, no che intanto lavori sul file poi a meta' ti "ricordi" che se non puoi andare avanti devi cancellare tutto quello che hai fatto, non stai usando transazioni in database, stai lavorando su variabili e files
Poi, sull' error_handler non saprei che dire , in realta' non e' detto che uno esclude l' altro , puoi usarli insieme, usare solo le eccezioni e lasciare comunque l' error_handler libero di notificare o warningare durante lo sviluppo ... poi puoi eliminarlo e basare tutto sulle eccezioni ma di fatto non sono la stessa cosa, molto simili per certi versi, ma non identici![]()