首页 > 解决方案 > MalformedURLException 除了协议(方案)的正确性之外,不关心 URL 的正确性吗?为什么?

问题描述

这些编译和运行没有MalformedURLException

new URL("http://example.com/dir1/dir2/page1.html&k>v%k1=>v^!");

new URL("http:////\\example\\.com/dir1/\\@dir2/@&##page1.html&k>v%k1=>v^!");

URL(String spec)构造函数写入的API

MalformedURLException - 如果未指定协议,或发现未知协议,或规范为 null

所以它只检查非空参数,如果它不为空 - 再检查一次正确/现有的协议(方案)。

URI 构造函数是不同的——它们java.net.URISyntaxException在两种情况下都在运行时抛出,检测非法字符。

1) 为什么 MalformedURLException 仅限于检查协议?这对于其名称“格式错误的 URL”具有误导性......

2) 我是否应该总是更喜欢使用 URI 而不是使用 URL,并且仅出于遗留/兼容性原因而留下 URL?

标签: javaurluri

解决方案


推荐阅读