URL
的.toURI()
方法的javadoc提到,如果:
[...]此URL未严格按照RFC2396格式化,因此无法转换为URI,则可能会引发
URISyntaxException
。
然而,我迄今为止一直未能成功触发此异常。更重要的是,你需要“通过”URL
构造函数测试。
那么,是否存在一个有效的URL
示例,它不是有效的URI
?
URL
的.toURI()
方法的javadoc提到,如果:
[...]此URL未严格按照RFC2396格式化,因此无法转换为URI,则可能会引发
URISyntaxException
。
然而,我迄今为止一直未能成功触发此异常。更重要的是,你需要“通过”URL
构造函数测试。
那么,是否存在一个有效的URL
示例,它不是有效的URI
?
URL
类在容忍语法不正确的URL时特别宽容。如果我没记错,它只验证是否有已知协议处理程序来处理该方案,并接受方案特定部分中的所有内容。
产生URISyntaxException
最简单的方法可能是这样的:
new URL("http:// ").toURI();
它可能包含以下任何字符:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=.
http://exámple.com/ /foo
是一个有效的URL(虽然根据旧的RFC定义不是有效的URI),可以使用java.net.URL
正常工作,但会破坏java.net.URI
。 - smola