(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);
}}}
运行结果截图: