V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pmispig
V2EX  ›  Java

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

  •  
  •   pmispig · 2022-05-24 22:35:25 +08:00 · 1624 次点击
    这是一个创建于 938 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    “很多开发者直接 httpclient.get(url) 没有 try ”,责任是出在这里的,把这个责任推到 httpclient 这一层,那是道德绑架。
    Bromine0x23
        6
    Bromine0x23  
       2022-05-25 22:47:54 +08:00
    @cheng6563 然而 Java 15 以后确实会了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5439 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 06:00 · PVG 14:00 · LAX 22:00 · JFK 01:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.