编码URL解码:Java中的UnsupportedEncodingException
我从文档中了解到UnsupportedEncodingException只能在我将错误编码指定为URLDecover的第二个参数时抛出。解码(字符串,字符串)方法。是这样吗?我需要知道可以抛出此异常的情况
基本上,我的一个函数中有一个代码段:
if (keyVal.length == 2) {
try {
value = URLDecoder.decode(
keyVal[1],
"UTF-8");
} catch (UnsupportedEncodingException e) {
// Will it ever be thrown?
}
}
既然我明确提到了“UTF-8”,有没有任何方法可以抛出这个异常?我需要在接球区做些什么吗?或者,如果我的理解完全错误,请让我知道
# 1 楼答案
它不可能发生,除非JVM中存在根本性的缺陷。但我认为你应该这样写:
这样做的代价是几个字节的代码“永远”不会被执行,一个字符串文字永远不会被使用。这对于防止您误读/误解javadocs(在本例中您没有…)的可能性来说是一个很小的代价或者规格可能会改变(在这种情况下不会改变…)
# 2 楼答案
这是因为选择
UnsupportedEncodingException
进行检查很奇怪。不,不会被扔的我通常会这样做:
# 3 楼答案
在你的特殊情况下——不,它不会被抛出。除非您在不支持“UTF-8”的Java运行时中执行代码
# 4 楼答案
为新读者回答一个老问题:
Java11现在有
URLDecoder.decode(String, Charset);
,它不会抛出。所以你根本不需要使用试抓块。只要做: