我们可以捕获UnsupportedOperationException

时间:2016-12-08 02:41:57

标签: java exception

在下面的示例中,我可以获得结果打印但是期待运行时异常。由于我使用了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;

1 个答案:

答案 0 :(得分:1)

  

这是否意味着我能够捕获未经检查的异常?

当然,你可以。但是,这并不意味着应该

  

为什么我们可以通过将catch块放在我们怀疑发生运行时异常的地方来进行简单的操作?

我们当然可以这样做。但是,这样做是错误的,因为在设计合理的系统中,运行时异常表示编程错误。这些错误需要在代码中修复,而不是捕获。例如,如果您不知道某个集合是否可以修改,请不要在不进行复制的情况下对其进行修改。