Je veux que l'API de mon module ne lève MyPackageSpecificException que lorsque quelque chose ne va pas et que le module ne peut pas effectuer sa tâche. (L'exception d'origine sera donnée comme cause de l'exception MyPackageSpecificException).Exceptions d'enveloppes levées dans super/ce constructeur appelle d'autres exceptions
Maintenant, pour un constructeur, j'avais besoin d'une URL comme paramètre pour localiser une ressource. Je voudrais aussi faire un constructeur alternative à laquelle une représentation de chaîne de l'URL peut être donnée:
public MyClass(String urlString) throws MalformedURLException{
this(new URL(urlString));
}
Comme le constructeur URL lance MalformedURLException, je veux l'envelopper dans un MyPackageSpecificException en faisant:
public MyClass(String urlString) throws MyPackageSpecificException{
try{
this(new URL(urlString));
} catch (MalformedURLException e){
throw new MyPackageSpecificException(e);
}
}
Mais, ce qui précède n'est pas valide, car l'appel du constructeur super() ou this() doit se produire sur la première ligne du constructeur.
Le même problème s'applique si le constructeur super() ou this() renvoie une exception que je souhaite placer dans quelque chose d'autre.
Comment dois-je résoudre ce problème? Ou est ce que j'essaie de faire une mauvaise pratique?
Je ne peux pas croire que je n'y ai pas pensé. Simple, et fait exactement ce que je veux. – Alderath