UnsupportedEncodingException

UnsupportedEncodingException

说我在方法中有以下几行:

 String encodedString = URLEncoder.encode(foo, "utf-8");

此方法抛出UnsupportedEncodingException。哪个更好:
/** @throws UnsupportedEncodingException umm...never
 */
public void myMethod() throws UnsupportedEncodingException {
   ...
   String encodedString = URLEncoder.encode(foo, "utf-8");
   ...
}

(强制调用者自己接听)或:
public void myMethod() {
   try {
     ...
     String encodedString = URLEncoder.encode(foo, "utf-8");
     ...
   catch(UnsupportedEncodingException e) {
      Logger.log("cosmic ray detected!");
   }

}

还是有一种更优雅的方式来处理真正不可能发生的异常?

最佳答案

永不说永不 ;)

在上面的示例中,您总是可以捕获异常,然后抛出RuntimeException:

public void myMethod() {
   try {
      ...
      String encodedString = URLEncoder.encode(foo, "utf-8");
       ...
   } catch(UnsupportedEncodingException e) {
     throw new RuntimeException("This should not be possible",e);
   }

}

这样,调用者就不会被迫捕获您99.999%肯定不会发生的事情,但是在发生这种疯狂事件的情况下,您仍然会遇到异常气泡,直至您可以注意到它并能够迅速意识到发生了什么变化并修复它。

高温超导

10-07 16:29