Desidero che l'API del mio modulo sollevi MyPackageSpecificException ogni volta che qualcosa va storto e il modulo non è in grado di eseguire il suo compito. (L'eccezione originale verrà indicata come causa di MyPackageSpecificException).Avvolgimento di eccezioni generate in super/questo costruttore chiama in altre eccezioni
Ora, per un costruttore, avevo bisogno di un URL come parametro per localizzare una risorsa. Vorrei anche fare un costruttore di un'alternativa al quale può essere data una rappresentazione di stringa del URL:
public MyClass(String urlString) throws MalformedURLException{
this(new URL(urlString));
}
Come il costruttore URL getta MalformedURLException, voglio avvolgerla in un MyPackageSpecificException facendo:
public MyClass(String urlString) throws MyPackageSpecificException{
try{
this(new URL(urlString));
} catch (MalformedURLException e){
throw new MyPackageSpecificException(e);
}
}
Tuttavia, quanto sopra non è valido, poiché la chiamata del costruttore super() o this() deve essere eseguita sulla prima riga del costruttore.
Lo stesso problema si applica se il costruttore super() o this() genera un'eccezione che voglio racchiudere in qualcos'altro.
Come dovrei risolvere? O è quello che sto cercando di fare cattive pratiche?
Non posso credere di non aver pensato a questo. Semplice e fa esattamente quello che voglio. – Alderath