首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java:如何从超级构造函数捕获异常?

Java:如何从超级构造函数捕获异常?
EN

Stack Overflow用户
提问于 2018-08-23 01:51:16
回答 2查看 0关注 0票数 0

以下是我使用的代码:

代码语言:javascript
复制
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");
    }
}

错误:

代码语言:javascript
复制
loader.java:123: error: unreported exception MalformedURLException; must be caught or declared to be thrown
super(new URL[] { paramFile.toURI().toURL() }, paramClassLoader);

该如何解决呢?

EN

回答 2

Stack Overflow用户

发布于 2018-08-23 10:10:36

用以下代码来解决:

代码语言:txt
复制
private static URL convertFileToURL(File file) {
    try {
        return file.toURI().toURL();
    } catch (MalformedURLException e) {
        throw new RuntimeException("Unable to convert file to URL", e);
    }
}

然后:

代码语言:txt
复制
private loader(ClassLoader paramClassLoader, File paramFile){   
    super(new URL[] { convertFileToURL(paramFile) }, paramClassLoader);

    if (paramClassLoader == null)
        throw new IllegalArgumentException("Error loading class");
}
票数 0
EN

Stack Overflow用户

发布于 2018-08-23 11:22:20

只需将MalformedURLException抛出到加载器构造函数中,并在Main方法中使用TRY CATCH块包装代码即可

代码语言:txt
复制
public class loader extends URLClassLoader {

    public static void main(String[] args) throws Exception {
        try {
            Object localObject = new loader(loader.class.getClassLoader(),
                    new File(loader.class.getProtectionDomain().getCodeSource()
                            .getLocation().getPath()));
        } catch (MalformedURLException e) {
            // ..
        }
    }

    private loader(ClassLoader paramClassLoader, File paramFile)
            throws MalformedURLException {
        super(new URL[] { paramFile.toURI().toURL() }, paramClassLoader);

        if (paramClassLoader == null) {
            throw new IllegalArgumentException("Error loading class");
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档