6.2 捕获的异常:不能忽视

除了下面的例子,对捕获的异常不做响应是极少正确的。(典型的响应方式是打印日志,或者如果它被认为是不可能的,则把它当作一个AssertionError重新抛出。)

如果它确实是不需要在catch块中做任何响应,需要做注释加以说明(如下面的例子)。

  1. try {
  2. int i = Integer.parseInt(response);
  3. return handleNumericResponse(i);
  4. } catch (NumberFormatException ok) {
  5. // it's not numeric; that's fine, just continue
  6. }
  7. return handleTextResponse(response);

例外:在测试中,如果一个捕获的异常被命名为expected,则它可以被不加注释地忽略。下面是一种非常常见的情形,用以确保所测试的方法会抛出一个期望中的异常, 因此在这里就没有必要加注释。

  1. try {
  2. emptyStack.pop();
  3. fail();
  4. } catch (NoSuchElementException expected) {
  5. }