Java 我们能抓住不支持的操作异常吗

Java 我们能抓住不支持的操作异常吗,java,exception,Java,Exception,在下面的示例中,我可以得到打印的结果,尽管我预期会出现运行时异常。由于我使用了catch块,这是否意味着我也能够捕获未检查的异常?如果是这样的话,为什么我们不能简单地将catch块放在我们怀疑发生运行时异常的地方 代码如下: public class CollectionsSample { public static void main(String args[]) /*throws UnsupportedOperationException*/{ Set<String>

在下面的示例中,我可以得到打印的结果,尽管我预期会出现运行时异常。由于我使用了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);
    }

}
公共类集合示例{
publicstaticvoidmain(字符串args[])/*抛出UnsupportedOperationException*/{
Set st=新的HashSet();
圣加达(“阿克希尔”);
圣加达(“古普塔”);
Collection coll=集合。不可修改的集合(st);
试一试{
coll.添加(“变更”);
}捕获(例外e){
//投掷e;
}
for(字符串s:st){
系统输出打印项次(“+s”);
}
}
这将生成作为akkhil-gupta的输出,尽管我希望它通过coll.add的runtimeexoption(“changed”)

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

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

为什么我们不能简单地将catch块放在怀疑发生运行时异常的地方


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

您认为如何<代码>捕获(异常e)有什么作用?您对处理异常的理解是什么?您认为这里是如何处理异常的?