UnsupportedEncodingException

UnsupportedEncodingException

我从文档中了解到,只有当我将错误的编码指定为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(在这种情况下您没有...)或规格可能会更改(在这种情况下它们不会...)

07-26 09:06