java - 如何在 Android 设备上手动触发“无法解析主机”异常
问题描述
我通过日志在我的生产应用程序中看到这些类型的错误激增:
"Unable to resolve host "{my.api.website}": No address associated with hostname"
该站点/ API 适用于 99.9% 的人,我只是间歇性地看到这一点。
根据这些链接,这似乎是互联网连接的问题:
因此,我设置了一些重试逻辑,以便再次尝试,但问题是我不确定如何使用 Android 设备(模拟器或实时)实际故意触发此异常,以查看新修复是否有效。
我将如何手动触发java.lang.exception
我正在访问的站点引发此unable to resolve host
问题的位置?
解决方案
UnknownHostException
您可以通过错误地拼写主机名来触发。错误的原因不会相同,但至少您会得到相同类别的异常。
在“野外”发生这种异常的原因有很多,包括:
- 设备在主机名解析期间或之前不久失去与网络的连接
- 设备连接到拦截 DNS 请求或未连接到 Internet 的强制门户
- 由于任何其他随机原因,DNS 请求失败或超时
DNS 请求超时是一个特别隐蔽的问题。它们很难复制。默认的超时时间太长了,超过了用户愿意等待的时间,而且没有办法改变它。开发人员不得不求助于这样的黑客:我可以在 Android 中为 DefaultHttpClient 设置 getaddrinfo 超时吗?
推荐阅读
- html - 使用 Python 和 Selenium 从图中提取数据
- python - 跨多个 API 调用保留 SSH 会话
- python - 我怎样才能使这个完美平方和函数更有效?
- javascript - 如何在具有私有方法的 Jest 中模拟 http 方法
- android - Android Retrofit,如何阻止同一请求的多个副本
- angular - 如何在移动顶点时重新调整 mxgraph 边缘以使其看起来不奇怪?
- javascript - 表单提交的firebase更新不起作用?
- python - 在 SQLAlchemy 中使用设置器时获取 AttributeError
- python - 使用 conda 或 pip 在 windows 上安装 conda
- c# - 在 C# 中为 SQLite 形成数据结构时遇到问题