Ma i dubbi riguardano se usare le eccezioni?
Per il resto osservo che la classe factory può essere semplificata.