0

以下异常处理有什么问题...有人告诉我这是不正确的,现在我的异常处理不是最好的...

  try {

  } catch (UnsupportedEncodingException | HttpException e) {

  } catch (IOException e) {

  }

有什么指导吗?

4

3 回答 3

0

在单独的 catch 块中处理每个异常始终是一个好习惯,以便可以采取特定于该异常的操作。

于 2013-03-21T14:06:25.720 回答
0

这是自 Java 7 以来可接受的语法,但由于这是(相对)新的,常见的习惯用法是每次捕获处理一种类型。我唯一可以接受这种语法的情况是,如果 catch 对 catch 中的所有类型执行完全相同的工作,即使这样......

您还必须注意异常的层次结构,我认为从左到右评估倍数,但您需要先检查一下,然后再依赖它。

于 2013-03-21T14:09:54.567 回答
0

我不认为你的处理方式HttpExceptionIOException.

异常处理最重要的部分是确保:

  • 你可以做一些例外的事情。如果你不能做任何事情,最好的策略是重新抛出异常(也许用一个对你的应用程序的上层更有意义的异常来包装它)。

  • 您了解可以引发每个异常的条件之间的区别。

例如,aUnsupportedEncodingException表示 Java 无法处理指定的编码。如果您正在使用某些 WS API,这意味着消息格式可能不正确(Java 处理了大多数标准编码,因此消息很可能是错误的)。IOException请注意,当您要Reader使用不受支持的编码创建一个时,这是 Java 抛出的一个子类。

HttpException表示您已收到 HTTP 故障响应。不是IOException因为“数据传输”好。指示来自服务器的错误,而不是连接中的错误。

IOException意味着在处理流时发生了一些不好的事情(可能流以意想不到的方式结束)。

根据每个错误的原因,代码中唯一“不好”的是 mixinUnsupportedEncodingExceptionHttpException. 这取决于您在异常处理程序中执行的操作,但两种异常都有不同的原因。

于 2013-03-21T14:14:04.867 回答