发现很多 timeout 异常不输出具体目标地址,是底层库作者人性扭曲还是业务开发者道德沦丧

2022-05-24 22:35:25 +08:00
 pmispig

看到过很多 httpclient timeout,socket timeout(mysql,smtp) 几乎从来没见过哪个异常日志输出具体目标地址。一旦出现只能靠猜。 这个现象是底层库作者人性扭曲还是上层开发者道德沦丧。。 我觉得要是我来实现一个 httpclient 的 get 方法,出现了异常,应该是要抛出具体地址吧?不然很多开发者直接 httpclient.get(url) 没有 try 的话,最后抛出了异常,根本不知道是什么情况啊

1501 次点击
所在节点    Java
6 条回复
xgfan
2022-05-25 01:03:42 +08:00
这问题 n 年前就讨论过了
xgfan
2022-05-25 01:06:20 +08:00
sprite82
2022-05-25 09:39:41 +08:00
@xgfan 为了安全吧,有些客户就会要求我们把配置文件的数据库连接信息加密,日志里用户信息脱敏等
cheng6563
2022-05-25 10:00:16 +08:00
你看 NPE 也没说哪个方法异常,Android 除外
nothingistrue
2022-05-25 10:01:51 +08:00
如果我没记错的话,timeout 隶属于 IOException ,这是个 CheckException 。谁处理谁负责,URL 是上层给的,就应该上层负责。httpclient 这一层如果优化了异常信息是优点,如果不优化但是抛出了 CheckException (或者虽然抛出 RuntimeException 但是给出了明确的 throws 声明)那是本质。

“很多开发者直接 httpclient.get(url) 没有 try ”,责任是出在这里的,把这个责任推到 httpclient 这一层,那是道德绑架。
Bromine0x23
2022-05-25 22:47:54 +08:00
@cheng6563 然而 Java 15 以后确实会了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/855083

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX