是否有实用程序可以在Java中解析URL而不检查异常?

2022-09-03 07:30:06

编辑:似乎我在第一个听起来太烦了,这是一个返工。

我想创建一个URL常量,就像这样

public static final URL REMOTE_URL = new URL("http://example.com/");

但是我不能,因为构造函数会抛出一个检查的异常。现在我使用

public static final URL REMOTE_URL = createUrl("http://example.com/");

private static URL createUrl(String url) {
    try {
        return new URL(url);
    } catch (MalformedURLException error) {
        throw new IllegalArgumentException(error.getMessage(), error);
    }
}

但这感觉就像是重新发明了轮子。我不可能是唯一一个想要使用URL常量的人,不是吗?所以我想知道是否有第三方工具箱库(如番石榴或apache-commons,或者其他东西,任何东西)或者更好的是,标准Java中包含此功能的东西?当我们通过减小:)util包的大小来启动新项目时,这将对我有所帮助。


答案 1

这种抱怨一定是常见的,因为Java(自1.7以来)引入了URI类。此类有两种构造它的方法:

  1. 使用 URI.new,这会引发已检验的异常
  2. 使用 URI.create,这会引发未经检查的异常

对于像您这样的已知来自安全来源的URI /URL,您可以使用URI.create()变体,而不必担心捕获异常,因为您知道它不会被抛出。

遗憾的是,有时您无法使用 URI,并且仍然需要 URL。没有标准方法(到目前为止我已经找到)将URI转换为不引发已检查异常的URL。


答案 2

由于其他人都在评论,我将提供答案,即没有标准的方法可以做你想做的事情:)

另外,既然你提到了apache commons和google番石榴,我会指出标准也不是使用的正确词。也许你想要开源,免费或只是第三方。


推荐