Modülümün api'sinin, herhangi bir sorun olduğunda ve modül görevini yerine getiremediğinde yalnızca MyPackageSpecificException öğesini atmasını istiyorum. (Orijinal istisnası MyPackageSpecificException'ın nedeni olarak verilecektir).Süper/bu kurucuda atılan istisnalar, diğer istisnalar için çağrılıyor
Şimdi, bir kurucu için bir kaynağın yerini bulmak için bir parametre olarak bir URL'ye ihtiyacım vardı. URL yapıcısı MalformedURLException atar gibi ben yaparak MyPackageSpecificException içine sarmak istiyorum
public MyClass(String urlString) throws MalformedURLException{
this(new URL(urlString));
}
:
public MyClass(String urlString) throws MyPackageSpecificException{
try{
this(new URL(urlString));
} catch (MalformedURLException e){
throw new MyPackageSpecificException(e);
}
}
Ben de URL String temsil verilebilir hangi alternatif yapıcı yapmak istiyorum
Ancak, super() veya this() yapıcı çağrısı yapıcının ilk satırında olması gerektiğinden, yukarıdaki geçerli değildir.
Aynı sorun, super() veya this() yapıcısı başka bir şeye sarmak istediğim bir istisna atarsa da geçerlidir.
Bunu nasıl çözmeliyim? Yoksa kötü bir uygulama yapmaya çalışıyorum mı?
yerine) (ortak bir init bu adres kullanmanınpublic class MyClass
{
private URL url;
public MyClass(URL url)
{
this.url = url;
}
public MyClass(String urlString) throws MyPackageSpecificException
{
this(toURL(urlString));
}
private static URL toURL(String urlString) throws MyPackageSpecificException
{
try
{
return new URL(urlString));
}
catch (MalformedURLException e)
{
throw new MyPackageSpecificException(e);
}
}
}
Bunu düşünmediğime inanamıyorum. Basit ve tam olarak istediğimi yapar. – Alderath