java 异常捕获

异常类定义程序所遇到的轻微错误

    发生下列情况时,会出现异常:

      想打开的文件不存在

      网络连接中断

      受控操作数超出预定范围

      非常感兴趣地正在装载的类文件丢失

    错误类定义严重的错误条件

什么是异常?在Java编程语言中,异常类定义程序中可能遇到的轻微的错误条件。可以写代码来处理异常并继续程序执行,而不是让程序中断。

异常处理

 

trycatch语句

try {

   // code that might throw a particular exception

} catch (MyExceptionType e) {

  // code to execute if a MyExceptionType exception is thrown

} catch (Exception e) {

// code to execute if a general Exception exception is thrown

  }

 要处理特殊的异常,将能够抛出异常的代码放入try块中,然后创建相应的catch块的列表,每个可以被抛出异常都有一个。如果生成的异常与catch中提到的相匹配,那么catch条件的块语句就被执行。在try块之后,可能有许多catch块,每一个都处理不同的异常。

调用栈机制

    如果方法中的一个语句抛出一个没有在相应的try/catch块中处理的异常,那么这个异常就被抛出到调用方法中。如果异常也没有在调用方法中被处理,它就被抛出到该方法的调用程序。这个过程要一直延续到异常被处理。如果异常到这时还没被处理,它便回到main(),而且,即使main()不处理它,那么,该异常就异常地中断程序。

    考虑这样一种情况,在该情况中main()方法调用另一个方法(比如,first()),然后它调用另一个(比如,second())。如果在second()中发生异常,那么必须做一个检查来看看该异常是否有一个catch;如果没有,那么对调用栈(first())中的下一个方法进行检查,然后检查下一个(main())。如果这个异常在该调用栈上没有被最后一个方法处理,那么就会发生一个运行时错误,程序终止执行。

1.   public static void main (String args[]) {

2.     int i = 0;

3.     String greetings [] = {

4.       "Hello world!",

5.       "No, I mean it!",

6.       "HELLO WORLD!!"

7.     };

8.     while (i < 4) {

9.       try {

10.      System.out.println (greetings[i]);

11.      } catch (ArrayIndexOutOfBoundsException e){

12.      System.out.println( "Re-setting Index Value");

13.      i = -1;

14.      } finally {

15.      System.out.println("This is always printed");

16.      }

17.      i++;

18.      } // end while()

19.           } // end main()

 

 

只要有finally代码块,都是先将finally代码块中的代码执行完才进行return.并且一个方法中如果try 和 catch 中都含有了return 那么方法最终就不在需要写return .

 

注意:

 

如果终止程序的System.exit()方法在保护码内被执行,那么,这是finally语句不被执行的唯一情况。这就暗示,控制流程能偏离正常执行顺序,比如,如果一个return语句被嵌入try块内的代码中,那么,finally块中的代码应在return前执行。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值