以下异常处理有什么问题...有人告诉我这是不正确的,现在我的异常处理不是最好的...
try {
} catch (UnsupportedEncodingException | HttpException e) {
} catch (IOException e) {
}
有什么指导吗?
以下异常处理有什么问题...有人告诉我这是不正确的,现在我的异常处理不是最好的...
try {
} catch (UnsupportedEncodingException | HttpException e) {
} catch (IOException e) {
}
有什么指导吗?
在单独的 catch 块中处理每个异常始终是一个好习惯,以便可以采取特定于该异常的操作。
这是自 Java 7 以来可接受的语法,但由于这是(相对)新的,常见的习惯用法是每次捕获处理一种类型。我唯一可以接受这种语法的情况是,如果 catch 对 catch 中的所有类型执行完全相同的工作,即使这样......
您还必须注意异常的层次结构,我认为从左到右评估倍数,但您需要先检查一下,然后再依赖它。
我不认为你的处理方式HttpException
和IOException
.
异常处理最重要的部分是确保:
你可以做一些例外的事情。如果你不能做任何事情,最好的策略是重新抛出异常(也许用一个对你的应用程序的上层更有意义的异常来包装它)。
您了解可以引发每个异常的条件之间的区别。
例如,aUnsupportedEncodingException
表示 Java 无法处理指定的编码。如果您正在使用某些 WS API,这意味着消息格式可能不正确(Java 处理了大多数标准编码,因此消息很可能是错误的)。IOException
请注意,当您要Reader
使用不受支持的编码创建一个时,这是 Java 抛出的一个子类。
HttpException
表示您已收到 HTTP 故障响应。不是IOException
因为“数据传输”好。指示来自服务器的错误,而不是连接中的错误。
IOException
意味着在处理流时发生了一些不好的事情(可能流以意想不到的方式结束)。
根据每个错误的原因,代码中唯一“不好”的是 mixinUnsupportedEncodingException
和HttpException
. 这取决于您在异常处理程序中执行的操作,但两种异常都有不同的原因。