我嘗試編寫我自己的加載類的加載類。Java:從超級構造函數捕獲異常
因此,我也覆蓋構造loader(ClassLoader paramClassLoader, File paramFile)
,其調用super(new URL[] { paramFile.toURI().toURL() }, paramClassLoader);
。
呼叫 「.toUrl()」 可以拋出MalformedURLException
,所以編譯如下代碼...
public class loader extends URLClassLoader {
public static void main(String[] args)throws Exception{
Object localObject =
new loader(loader.class.getClassLoader(),
new File(loader.class.getProtectionDomain().getCodeSource()
.getLocation().getPath())
);
(...)
}
private loader(ClassLoader paramClassLoader, File paramFile){
super(new URL[] { paramFile.toURI().toURL() }, paramClassLoader);
if (paramClassLoader == null)
throw new IllegalArgumentException("Error loading class");
}
}
錯誤:
loader.java:123: error: unreported exception MalformedURLException; must be caught or declared to be thrown
super(new URL[] { paramFile.toURI().toURL() }, paramClassLoader);
我怎麼能捕獲此異常? try-catch-block是不可能的,因爲「super super call必須是構造函數中的第一條語句」。
一般來說,你應該避免在構造函數中發生任何類型的異常。爲什麼不傳遞paramFile.toURI()。toURL()作爲構造函數的參數?通過這種方式,您可以在創建對象之前捕獲異常。 –