Ich möchte die API meines Moduls nur MyPackageSpecificException werfen, wenn etwas schief geht und das Modul seine Aufgabe nicht ausführen kann. (Die ursprüngliche Ausnahme wird als Ursache für die MyPackageSpecificException angegeben).Wrapping Ausnahmen ausgelöst in Super/dieser Konstruktor Aufrufe in andere Ausnahmen
Jetzt brauchte ich für einen Konstruktor eine URL als Parameter, um eine Ressource zu finden. Ich möchte auch einen alternativen Konstruktor machen, an die eine String-Darstellung der URL angegeben werden kann:
public MyClass(String urlString) throws MalformedURLException{
this(new URL(urlString));
}
Da die URL Konstruktor MalformedURLException wirft, ich will es in eine MyPackageSpecificException wickeln, indem Sie:
public MyClass(String urlString) throws MyPackageSpecificException{
try{
this(new URL(urlString));
} catch (MalformedURLException e){
throw new MyPackageSpecificException(e);
}
}
Aber das obige ist nicht gültig, da der Konstruktoraufruf super() oder this() in der ersten Zeile des Konstruktors auftreten muss.
Das gleiche Problem gilt, wenn der Konstruktor super() oder this() eine Ausnahme auslöst, die ich in etwas anderes einwickeln möchte.
Wie soll ich das lösen? Oder ist das, was ich versuche, schlechte Praxis zu machen?
Ich kann nicht glauben, dass ich nicht darüber nachgedacht habe. Einfach und macht genau das, was ich will. – Alderath