Topic: 关于异常的问题 |
Print this page |
1.关于异常的问题 | Copy to clipboard |
Posted by: wslss007 Posted on: 2005-10-20 11:53 public class catchDemo { public static void main(String args[]){ catchDemo object=new catchDemo(); try { System.out.println("trying"); object.sampleMethod(); System.out.println("trying after call"); } catch (Exception e) { System.out.println("catching"); System.out.println(e.getMessage()); } } public void sampleMethod() throws Exception { System.out.println("starting sample Method"); throw new Exception("From sampleMethod with love"); } } 请看如上程序,为什么输出时候没有“trying after call",我的理解是先执行try 语句,然后看throw子句中定义了一个异常,然后再跳到catch 语句来捕获异常,可以如此理解吗? |
2.Re:关于异常的问题 [Re: wslss007] | Copy to clipboard |
Posted by: Jcat Posted on: 2005-10-20 17:40 在try块中出现异常时,程序会直接跳到catch块,并不将try块执行完。 如果想实现你的“理解”,可以在最后加一个finally块,此块必然被执行 finally{ |
3.又一个异常问题 [Re: wslss007] | Copy to clipboard |
Posted by: why Posted on: 2005-10-20 21:09 wslss007 posted on http://www.cjsdn.net/post/view?bid=1&id=160223
以上输出为什么先是“bbb”,然后才是“caught in main” |
4.Re:关于异常的问题 [Re: wslss007] | Copy to clipboard |
Posted by: Jcat Posted on: 2005-10-21 13:34 我将您的方法的代码直接写到调用方法处,这样可能有助于您看清“层”。 我的理解如下: 1.书上对关键字finally的描述:Runs its code before terminating the program 2.单就这段代码来说,它是被结构化的顺序的执行的。(面向过程) 3.可以有三种形式的组合:try-catch,try-finally,try-catch-finally 4.任何一个组合都是一个整体,您不能割裂的看问题。 具体解释: 1.当第二层的try抛出一个异常时,它将要terminate第二层的代码,before terminating the code,finally块将被执行。 2.然后第一层的try继续将这个异常抛出,如果后面(您调用函数的位置的后面)还有代码将不会被执行。 3.这时第一层的catch块捕获了这个异常,并执行catch块中的代码。 public class Application1 { |
5.Re:关于异常的问题 [Re: wslss007] | Copy to clipboard |
Posted by: wslss007 Posted on: 2005-10-21 21:21 好,明白了,谢谢。 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |