我从文档中了解到,只有当我将错误的编码指定为URLDecoder.decode(String,String)方法的第二个参数时,才能抛出UnsupportedEncodingException。是这样吗?我需要知道可以引发此异常的情况。
基本上,我的其中一个功能中包含以下代码段:
if (keyVal.length == 2) {
try {
value = URLDecoder.decode(
keyVal[1],
"UTF-8");
} catch (UnsupportedEncodingException e) {
// Will it ever be thrown?
}
}
由于我明确提到“UTF-8”,因此有什么方法可以引发此异常?我需要在catch块中做任何事情吗?或者,如果我的理解是完全错误的,请告诉我。
最佳答案
除非您的JVM从根本上破坏了某些东西,否则它不会发生。但我认为您应该这样写:
try {
value = URLDecoder.decode(keyVal[1], "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new AssertionError("UTF-8 is unknown");
// or 'throw new AssertionError("Impossible things are happening today. " +
// "Consider buying a lottery ticket!!");'
}
这样做的代价是几个字节的代码“永不”执行,以及一个永远不会使用的String文字。这是一个很小的代价,可以防止您误读/误解了javadocs(在这种情况下您没有...)或规格可能会更改(在这种情况下它们不会...)