我从文档中了解到,只有当我指定错误的编码作为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?
}
}
Run Code Online (Sandbox Code Playgroud)
由于我明确提到"UTF-8",有什么办法可以抛出这个异常?我是否需要在catch块中做任何事情?或者,如果我的理解完全错误,请告诉我.
Ste*_*n C 51
除非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!!");'
}
Run Code Online (Sandbox Code Playgroud)
这样做的代价是"永远不会"执行的几个字节的代码,以及一个永远不会被使用的字符串文字.这是一个很小的代价,可以防止您误读/误解javadocs(在这种情况下你没有......)或规格可能会改变(在这种情况下它们不会......)
Boz*_*zho 14
那是因为做出选择的奇怪选择UnsupportedEncodingException.不,它不会被抛出.
我通常做如下:
} catch (UnsupportedEncodingException e) {
throw new AssertionError("UTF-8 not supported");
}
Run Code Online (Sandbox Code Playgroud)
在您的特殊情况下-不,它不会被抛出。除非您在不支持“ UTF-8”的Java运行时中执行代码。
| 归档时间: |
|
| 查看次数: |
39842 次 |
| 最近记录: |