在下面的示例中,我可以获得结果打印但是期待运行时异常。由于我使用了catch块,这是否意味着我能够捕获未经检查的异常呢?如果是这样,为什么我们不能简单地将catch块放在我们怀疑发生运行时异常的地方。
以下是代码:
public class CollectionsSample {
public static void main(String args[]) /*throws UnsupportedOperationException*/{
Set<String> st = new HashSet<String>();
st.add("akkhil");
st.add("gupta");
Collection<String> coll = Collections.unmodifiableCollection(st);
try{
coll.add("changed");
}catch(Exception e){
//throw e;
}
for(String s : st){
System.out.println(" " + s);
}
}
这会产生输出为akkhil gupta虽然我期望它通过在coll.add(“更改”)的runtimeexcption;
答案 0 :(得分:1)
这是否意味着我能够捕获未经检查的异常?
当然,你可以。但是,这并不意味着应该。
为什么我们可以通过将catch块放在我们怀疑发生运行时异常的地方来进行简单的操作?
我们当然可以这样做。但是,这样做是错误的,因为在设计合理的系统中,运行时异常表示编程错误。这些错误需要在代码中修复,而不是捕获。例如,如果您不知道某个集合是否可以修改,请不要在不进行复制的情况下对其进行修改。