西南财经大学天府学院教案 TIANFU COLLEGE OF SWUFE
教 案
编号:12
章节 异常处理 授课方式 讲授+讨论+上机 教 学 目 的 (1) 掌握异常的概念。 (2) 具备运用try块、catch块和finally块处理异常的能力。 (3) 掌握Java中异常类的继承体系结构。 (4) 运用关键字throw和throws处理异常。 (5) 掌握自定义异常。 (6) 培养学生程序的阅读能力。 (7) 培养学生自助学习的能力。 (8) 培养学生实际的动手能力。 (9) 培养学生团队意识。 教 学 重 点 教 学 难 点 时间 分配 Min 15 60 (1) try块、catch块和finally块。 (1) finally语句。 教 学 过 程 一、 作业点评及检查(学生阐述+老师总结) 作业讲解及点评:由1-2个学生讲述上周作业的实现思路以及展示程序实现;过程中由老师补充和总结。 预习检查:由1-2个人回答上周布置的思考题作业。由此引出本次课新内容。 二、 异常 (1) 什么是异常? a) 程序中出现的错误被称为异常; b) 异常可分为两大类:编译时异常和运行时异常; c) 编译时异常一般是指语法错误,可以通过编译器的提示加以修正,这里我们不予讨论; d) 运行时异常包括: 运行错误:如数组下标越界,除数为0等; 逻辑错误:如年龄超过200岁等。 (2) try块和catch块 a) try块:一般用来监视有可能产生异常的代码部分; b) catch块:当异常产生后,catch块捕捉异常,并在其中对异常进行处理。 …… try { …… //监视有可能发生异常的代码段 } catch (异常类型) //捕获发生的异常 第30页 共51页
西南财经大学天府学院教案 TIANFU COLLEGE OF SWUFE
105 { …… //对异常进行处理 } …… c) finally块 ? 无论try/catch块中发生了什么,finally块都一定会执行; ? 当异常发生时,程序可能会意外中断,有些被占用的资源就得不到清理。finally块可以确保执行所有的清理工作; ? 无论是否发生异常,finally块都将执行; ? finally块是可选的,可视具体情况决定是否添加; ? finally块必须和try块一起使用,不能单独存在。 d) try/catch/finally执行流程 (3) throw关键字 a) throw语句用于手工抛出异常; b) 执行流程将在throw语句后立即停止,转而寻找与之类型相匹配的catch块; c) throw语句的语法是: throw (异常类型的实例)。 (4) 用户自定义异常 a) Exception类和其子类都是系统内置的异常,这些异常不一定总能捕获程序中发生的所有异常; b) 有时候,我们可能要创建用户自定义的异常类; c) 用户自定义异常类应该是Exception类的子类; d) 类似于: class MyException extends Exception { …… } 三、 上机实验 1、编写程序ArrayDivide,在其中同时给出两个不同大小的整型数组。利用循环,将第一个数组包含的整型数作为被除数,第二个数组包含的整型数作为除数。用第一个数组中的整型数除以第二个数组中相应位置的元素。考虑各种可能产生的异常,并设计程第31页 共51页
西南财经大学天府学院教案 TIANFU COLLEGE OF SWUFE
序捕获和处理这些异常。 提示:当第一个数组的长度大于第二个数组的长度时,可能产生的ArrayIndex -OutOfBoundsException异常;当被除数为0时,可能产生ArithmeticException的异常 2、编写程序,实现从命令行输入三个数值参数作为三角形的三条边,以此构造一个三角形。程序应该实现如下功能: -->检查用户输入的命令行参数是否足够,如果不够三个参数,则程序可能产生ArrayIndexOutOfBoundsException异常 -->检查输入的命令行参数是否为数值格式,如果输入的数值参数格式错误,则程序可能产生NumberFormatException异常 -->检查输入的命令行参数中是否有负值,如果有负值,则程序可能产生 ArgumentException异常( ArgumentException为自定义异常) -->检查输入的命令行参数的三个数值是否能够构造一个三角形,如果不能构造一个三角形,则程序可能产生InvailEdgesException异常(InvailEdgesException为自定义异常) 提示:三角形任意两边之和必须大于第三边。 作 业 布 置 课 后 总 结 (1) P280-282 7、8、9。 (1) 90%的人都理解了异常处理,并且能够在程序中熟练的运用。但是在对finally块的掌握程度上还不够。 第32页 共51页
西南财经大学天府学院教案 TIANFU COLLEGE OF SWUFE
教 案
编号:13
章节 教 学 目 的 教 学 重 点 教 学 难 点 时间 分配 Min 25 155 Java基本语法、流程控制、面向对象编程、异常处理做一次全面的复习 授课方式 讲授+上机 (1) 巩固学生对前面章节内容的学习。 (2) 帮助学生将前面的内容串联起来,能够熟练的运用前面的内容来完成应用程序的编写。 (3) 培养学生自主学习的能力。 (4) 培养学生系统分析问题的能力。 (5) 培养学生的实际动手能力。 教 学 过 程 一、 作业点评及检查(学生阐述+老师总结) 作业讲解及点评:由1-2个学生讲述上周作业的实现思路以及展示程序实现;过程中由老师补充和总结。 作业检查:由3-5个同学给出作业的答案以及讲解实现思路,老师从旁补充和总结。 二、 上机实验 (1) Java有那些基本数据类型,String是不是基本数据类型? (2) char型变量中能不能存贮一个中文汉字?为什么? (3) 访问权限修饰符public,private,protected的区别,默认不写是? (4) error和exception有什么区别?请列举出常见的异常类。 (5) 用关键字final分别修饰类、方法、变量时,有何意义? (6) 运行时异常与编译时异常有何异同? (7) 什么是方法重载?什么是方法重写?它们有什么区别? (8) 多态的几种形式和各自的特点。 (9) JAVA语言如何进行异常处理?关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗? (10) 如果try {}里有一个return语句,那么紧跟在这个try后的finally {}里的代码会不会被执行,什么时候被执行,在return前还是后? (11) 请写出下列程序结果 a)class Base { int i = 99; public void amethod() { System.out.println(\ } 第33页 共51页
西南财经大学天府学院教案 TIANFU COLLEGE OF SWUFE
5 Base() { amethod(); } } public class Derived extends Base { int i = -1; public static void main(String argv[]) { Base b = new Derived(); System.out.println(b.i); b.amethod(); } public void amethod() { System.out.println(\ } } b) public class AccpTeacher { public void giveLesson(){ System.out.println(\知识点讲解\} } public class AccpDBTeacher extends AccpTeacher { public void giveLesson(){ System.out.println(\启动 SqlServer\} } public class Test { public static void main(String[] args) { AccpTeacher t = new AccpDBTeacher (); t.giveLesson(); } } c) class Base { public String name; public Base(){ name = \} public Base(String pName){ name = pName; } public void method(){ System.out.println(name); } 第34页 共51页