image.png
    几点说明:
    (1)异常发生后,try块中的剩余语句将不再执行
    try {
    int [ ] ints = { 1, 2, 3, 4 };
    System.out.println(“异常出现前”);
    System.out.println(ints[4]); //这里将出现异常
    System.out.println(“我还有幸执行到吗”);
    }
    (2)catch块中的代码要执行的条件是:

    • 首先在try块中发生了异常,其次异常的类型与catch要捕捉的一致。


      (3)可以无finally部分,但如果存在,则无论异常发生否,finally部分的语句均要执行

    • 即便是try或catch块中含有退出方法的语句return,也不能阻止finally代码块的执行;

    • 除非执行System.exit(0)等导致程序停止运行的语句。 ```java 例1: public class Test4 { static void method(int x[ ]) { try {
      1. System.out.println("x[5]="+x[5]); //here
      } catch (ArrayIndexOutOfBoundsException e) {
      1. System.out.println("下标变量出界");
      } finally {
      1. System.out.println("here");
      } } public static void main(String arg[ ]) {
      1. int a[ ]={12,8,5,87,5};
      2. method(a);
      } } 运行结果: 下标变量出界 here

    如果将here处改为x[4] 运行结果: x[4]=5 here

    例2: public class ex2{ public static void main(String args[]){ String str = null; //改成空串”” ,如何? try { if (str.length() == 0) System.out.print(“The”); System.out.print(“Cow”); } catch (Exception e) { System.out.print(“and”); } finally { System.out.print(“Chicken”); } System.out.println(“show”); } } 运行结果: andChickenshow

    如果将null改成空串”” 运行结果:

    例3: public class A { static int some() { try { System.out.println(“try”); return 1; } finally { System.out.println(“finally”); } } public static void main(String arg[]) { System.out.println(some()); } } 运行结果: try finally 1

    //例9-2 根据命令行输入的元素位置值查找数组元素的值 public class Ex9_2 { public static void main(String args[ ]) { int arr[ ] = { 100, 200, 300, 400, 500, 600 }; try { int p = Integer.parseInt(args[0]); // System.out.println(“元素值为: “ + arr[p] ); // } catch (ArrayIndexOutOfBoundsException a) { System.out.println(“数组下标出界”); } catch (NumberFormatException n) { System.out.println(“请输入一个整数”); } finally { System.out.println(“运行结束”); } } }

    注意catch 排列次序,以下代码编译出错: try { int x=4/0; System.out.println(“come here? “); } catch (Exception e) { //因为Exception已包含后面的异常类型 System.out.println(“异常!”+e.toString()); } catch (ArithmeticException e) { System.out.println(“算术运算异常!”+e.toString()); }
    ```