首页 > 解决方案 > 如何在 Android 设备上手动触发“无法解析主机”异常

问题描述

我通过日志在我的生产应用程序中看到这些类型的错误激增:

"Unable to resolve host "{my.api.website}": No address associated with hostname"

该站点/ API 适用于 99.9% 的人,我只是间歇性地看到这一点。

根据这些链接,这似乎是互联网连接的问题:

因此,我设置了一些重试逻辑,以便再次尝试,但问题是我不确定如何使用 Android 设备(模拟器或实时)实际故意触发此异常,以查看新修复是否有效。

我将如何手动触发java.lang.exception我正在访问的站点引发此unable to resolve host问题的位置?

标签: javaandroidexception

解决方案


UnknownHostException您可以通过错误地拼写主机名来触发。错误的原因不会相同,但至少您会得到相同类别的异常。

在“野外”发生这种异常的原因有很多,包括:

  • 设备在主机名解析期间或之前不久失去与网络的连接
  • 设备连接到拦截 DNS 请求或未连接到 Internet 的强制门户
  • 由于任何其他随机原因,DNS 请求失败或超时

DNS 请求超时是一个特别隐蔽的问题。它们很难复制。默认的超时时间太长了,超过了用户愿意等待的时间,而且没有办法改变它。开发人员不得不求助于这样的黑客:我可以在 Android 中为 DefaultHttpClient 设置 getaddrinfo 超时吗?


推荐阅读