假设我有一个方法中的以下代码行:
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!");
}
}
还有没有更优雅的方式来处理那些不可能发生的异常呢?
throw new AssertionError("this cannot happen", ex)
。 (说明:该代码行意味着在遇到不应该发生的异常情况时,会抛出一个包含错误信息和原始异常的断言异常。) - Stephen Ccatch (Exception e)
不会意外地捕获它。 - Stephen C