你如何处理Java中的"不可能"异常?

Miq*_*uel 17 java exception-handling

有时候,我最终还是要抓住一个我知道永远不会发生的异常,比如这里

URLDecoder.decode("some string", "UTF-8"); //No unknown encoding possible
Run Code Online (Sandbox Code Playgroud)

或者在这里:

public void methodWithURL(URL url){
    URI uri = new URI(url); //No invalud URI syntax possible
}
Run Code Online (Sandbox Code Playgroud)

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

Jul*_*ien 9

我赶上Exception并把它包起来Error.来自以下文件Error:

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


fdr*_*ger 5

我会跳过有趣的消息.

顺便说一句:我有一个案例,其中一段代码(在一个小型库中)假设编码可用.只有它部署在有限的设备上并在运行时爆炸.

已检查的异常用于显示我们的代码中的位置,我们应暂停一秒,并考虑路径较少(如"我的应用程序在网络死亡时所执行的操作"和其他极端情况).将它们包装在IllegalStateException中并重新抛出是一种签署的合同,程序员说:"是的,所有风险都被视为我对此处的现场承担全部责任".如果不是为了检查例外情况,那么我们就无法从明显的缺乏思想中知道一个有意义的决定.