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