你如何处理Java中的“impossible”异常?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (8)

有时候,我最终会遇到一个我知道永远不会发生的异常,比如这里

URLDecoder.decode("some string", "UTF-8"); //No unknown encoding possible

或在这里:

public void methodWithURL(URL url){
    URI uri = new URI(url); //No invalud URI syntax possible
}

你如何处理这个问题?我通常记录一个关于宇宙定律如何变化的有趣错误,然后抛出一个错误RuntimeException。有没有更好的办法?

提问于
用户回答回答于

我抓住Exception并包裹在一个Error。从文档Error

Error是Throwable的一个子类,表示合理的应用程序不应该尝试捕获的严重问题。

用户回答回答于

顺便说一句:我有一个情况,一段代码(在一个小型库中)只是假定编码可用。只有它被部署在有限的设备上并在运行时发生爆炸。

检查异常用于在我们的代码中显示我们应该暂停一秒的位置,并考虑较少路径的路径(如“我的应用在网络死亡时做什么”以及其他角落案例)。将它们包装在IllegalStateException中并重新抛出是一种签署的合同,程序员在这里说:“是的,所有的风险都考虑在内,我对现场负全部责任”。如果不是检查异常,我们将无法知道明显缺乏想法的一个明智的决定。

扫码关注云+社区