1)阅读以下代码(CatchWho.java),写出程序运行结果:

2)写出CatchWho2.java程序运行的结果

3)请先阅读 EmbedFinally.java示例,再运行它,观察其输出并进行总结。

 

总结:当有多层嵌套的finally时,异常在不同的层次抛出,在不同的位置抛出,可能会导致不同的finally语句块执行顺序。

4)依据对本讲多个示例程序的分析,请自行归纳总结出Java多层嵌套异常处理的基本流程。

 try-catch-finally相互嵌套时,先处理最内层的try-catch-finally。当try抛出了与catch匹配的异常,则代码到相应的catch()中执行。如果catch也出现了异常,程序会检测finally中是否有异常,若有,则覆盖。如果只有try-finally,那么先执行finally,如果finally没有异常,则返回处理try中的异常,如果finally有异常,则覆盖try中的异常

 

5)动手动脑

 

import javax.swing.*;

public class Score {

   public static void main(String []args){

      int n=0;

      try{

      String str=JOptionPane.showInputDialog("请输入学生成绩:");

      n=Integer.parseInt(str);

      if(0<=n&&n<60)

          {

             JOptionPane.showMessageDialog(null,"不及格",

                    "学生成绩",javax.swing.JOptionPane.INFORMATION_MESSAGE);

          }

       if(n>=60&&n<70)

       {JOptionPane.showMessageDialog(null,"及格",

             "学生成绩",javax.swing.JOptionPane.INFORMATION_MESSAGE);}

       if(n>=70&&n<80)

       {

          JOptionPane.showMessageDialog(null,"中",

                "学生成绩",javax.swing.JOptionPane.INFORMATION_MESSAGE);

       }

       if(n>=80&&n<90)

       {

          JOptionPane.showMessageDialog(null,"良",

                "学生成绩",javax.swing.JOptionPane.INFORMATION_MESSAGE);

       }

       if(n>=90&&n<=100)

       {

          JOptionPane.showMessageDialog(null,"优秀",

                "学生成绩",javax.swing.JOptionPane.INFORMATION_MESSAGE);

       }

       if(n>100)

       {

          JOptionPane.showMessageDialog(null,"输入不正确",

                "学生成绩",javax.swing.JOptionPane.INFORMATION_MESSAGE);

       }

       if(n<0)

       {

          JOptionPane.showMessageDialog(null,"输入不正确",

                "学生成绩",javax.swing.JOptionPane.INFORMATION_MESSAGE);

       }}

       catch(Exception e)

      {JOptionPane.showMessageDialog(null,"输入不正确",

             "学生成绩",javax.swing.JOptionPane.INFORMATION_MESSAGE);

       }}}

 运行结果截图: