说我在方法中有以下几行:
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%肯定不会发生的事情,但是在发生这种疯狂事件的情况下,您仍然会遇到异常气泡,直至您可以注意到它并能够迅速意识到发生了什么变化并修复它。
高温超导