java - 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?
解决方案
推荐阅读
- vb.net - 将不正确的值写入文本文件
- sql-server - 如何在 ssrs 报告中分别格式化日期和月份
- reactjs - 从 react-infinite-scroller 测试 InfiniteScroll 组件
- javascript - 当 prevProps 的数据类型是对象或数组时如何在 React Hooks 中访问 prevProps
- javascript - 从副作用调用调用 jest.spyOn 时不起作用
- flutter - 如何从颤动的小部件中使用的所有下拉字段中获取值?
- node.js - 如果存在子文档,则在其下添加对象
- java - 在 Spring Boot 中以什么顺序读取 application.yml?
- mongodb - mongodb 的 shell 日志记录
- android - 无法对齐父级底部的按钮