java – Try,Catch和Finally块
发布时间:2020-12-15 05:19:48 所属栏目:Java 来源:网络整理
导读:public class D {void myMethod() { try { throw new IllegalArgumentException(); } catch (NullPointerException npex) { System.out.println("NullPointerException thrown "); } catch (Exception ex) { System.out.println("Exception thrown "); } fin
public class D { void myMethod() { try { throw new IllegalArgumentException(); } catch (NullPointerException npex) { System.out.println("NullPointerException thrown "); } catch (Exception ex) { System.out.println("Exception thrown "); } finally { System.out.println("Done with exceptions "); } System.out.println("myMethod is done"); } public static void main(String args[]) { D d = new D(); d.myMethod(); } } 我不明白为什么“myMethod完成”也被打印出来.抛出了异常,因此它假设找到一个匹配的catch并执行finally块,但它继续在myMethod方法上并打印myMethod已完成,这不是finally块的一部分.为什么? 解决方法
这就是try-catch-finally的工作方式.因为您捕获了异常,所以它被认为已被处理,并且执行继续正常进行.
如果你没有抓住它,或者重新抛出它,那么“myMethod就完成了”就不会被打印出来,并且异常会在堆栈中冒出来,直到它被别人抓到. 请注意,finally块始终执行,异常或否. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |