Rust in Everything
基于 hyper 1.12.0

错误

两条主线上任何一步出错,最后都变成一个 hyper::Error:服务端是 Connection future 的结果和请求 body 的读取,客户端是 send_request、Connection future 和响应 body。这一部分只有一章,讲这个类型长什么样、能从它身上问出什么、问不出什么。

  1. hyper::Error:Box<ErrorImpl { kind, cause }>,一个指针大;12 种私有的 Kind 只能通过 11 个 is_* 判断,有 5 种没有对应的方法;Display 只打印这一层(1.0 起),底层原因在 source() 里,向下转型不算稳定 API。实验逐个触发每种 Kind,给出报错原文和服务端在线上回了什么;最后是 legacy Client 的 client error (...)。

常见报错各自是怎么产生的、怎么修,在「常见坑」一部分里按报错原文逐条讲。

💬 关联讨论

发起讨论
加载中...