实验四 抽象类接口与异常
(完整word版)实验四异常类的定义及处理

信息科学与工程学院《Java程序设计》上机实验报告专业班级姓名学号实验时间年月日指导教师成绩主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)try{int test3[]=null;test3[1]=100; //空指针无法赋值}catch (NullPointerException e){System.out.println("捕获异常:\n"+e);System.out.println(e.toString());}finally{System.out.println("捕获完成 \n\n");}}}(2).实验结果步骤(6):将outofBound()方法中捕获异常的语句注释掉,重新编译程序实验结果:编译通过,运行时出现错误System.out.println(e.toString());}finally{System.out.println("捕获完成\n\n");}}static void nullPointer(){try {int test3[]=null;test3[1]=100; //空指针无法赋值}catch (NullPointerException e){System.out.println("捕获异常:\n"+e);System.out.println(e.toString());}finally{System.out.println("捕获完成 \n\n");}}}实验结果:2.编写程序实现如下功能:计算两个数之和,参与求和运算的每个数的值都必须在10-20之间,当任意一个数超出范围时,抛出自己的异常。
(1)源程序public class SelfException{public static void selfExceptionTest(int a,int b) throws NumberRangeException {int answer;if(( a>10& b <20)&( a>10& b<20)){answer=a+b;System.out.println("两数之和为:"+answer);}elsethrow new NumberRangeException("错误");}public void manager(){try{selfExceptionTest(55,100);}catch(NumberRangeException e){System.out.println("输入数值超出范围,应该为10-20之间的整数");}}public static void main(String args[]){SelfException s=new SelfException();s.manager();}}class NumberRangeException extends Exception{public NumberRangeException(String message){super(message);}}(2)实验结果3.思考题(1)翻译下列常用异常类的描述信息OutOfMemoryErrorA class instance creation expression, array creation expression , or string concatenation operatior expression throws an OutOfMemoryError if there is insufficiente1.printStackTrace();}int i;double[] a=new double[3];StringTokenizer st=new StringTokenizer(s);for(i=0;i<3&&st.hasMoreTokens();i++){a[i]=Double.parseDouble(st.nextToken());}try{Area n=new Area();n.test(i,a);}catch(MyException e){System.out.println("输入错误参数");}}}实验结果:二.实验总结通过本次实验,了解了java中的异常处理。
实验五抽象类、包与接口

实验五抽象类、接口与包一、实验目的1、熟练掌握抽象类abstract的概念。
2、熟练掌握接口interface的概念。
3、熟练包package的概念以及编译运行的方法。
4、熟练掌握内部类inner class的概念。
5、熟练掌握递归的概念。
6、理解面向对象的程序设计方法。
二、实验内容与要求1.编写求解几何图形(如三角形,矩型,圆,多边型)的周长、面积的应用程序,要求用到继承、多态、抽象类、接口、内部类等面向对象程序设计技术的特点。
2、重写上面的程序,要求三角形,矩型,圆,多边型的类放到不同的包中,用包的技术组织程序的设计。
同时要求程序能从键盘上接受数据以便求解不同的几何图形的周长面积。
提示:从键盘上输入双精度数的一种方法(程序片段)……public static void main(String args[]) throws IOException{BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));String x;x=keyin.readLine();double a=Double.parseDouble(x);……3.练习ng.Class类的使用,通过一个对象返回一个Class对象,如何获取一个类的名称,如何使用class生成一个类的对象。
获取类的描述信息。
4、编写一个应用程序,实现以下功能:①声明一个接口(Calculability),接口中包含一个方法area()。
②声明一个三角形类继承该接口,类名为Triangle,类中包含两个变量、一个带参数的构造方法和一个计算三角形面积的方法:三角形的底边长w三角形的高h构造方法Triangle(double width,double height)。
计算三角形面积的方法area(),该方法覆盖接口(Calculability)的同名方法,计算三角形的面积(w*h/2)。
面向对象程序设计实验(二)2024

面向对象程序设计实验(二)引言概述:本文档旨在介绍面向对象程序设计实验(二)的相关内容。
实验(二)主要涉及面向对象程序设计中的基本概念和实践技巧。
通过本次实验,学生可以进一步巩固对于面向对象程序设计的理解和应用能力。
正文内容:1. 类与对象1.1 定义类和对象的基本概念1.2 区分类和对象的特点和属性1.3 类的成员变量与成员函数的关系1.4 类的继承与派生的用法和作用1.5 类型转换和类型检查的重要性和技巧2. 封装和继承2.1 封装的原则和目的2.2 不同类型的访问控制修饰符的应用与实践2.3 继承的基本概念和实现方法2.4 多态性的应用与实例解析2.5 接口与抽象类的定义和使用3. 异常处理3.1 异常处理的基本原则和作用3.2 异常的分类与处理方式3.3 异常处理的语法和使用方法3.4 异常处理的常见问题和解决策略3.5 异常处理的最佳实践和注意事项4. 面向对象设计的思想和原则4.1 面向对象设计的核心概念和思维方式4.2 SOLID设计原则的介绍和实践应用4.3 设计模式的分类和使用场景4.4 常用设计模式的详细介绍和实例应用4.5 面向对象设计的常见问题和解决策略5. 实践与案例分析5.1 针对实验要求的代码设计与实现5.2 对实验结果的分析和评价5.3 面向对象程序设计思想在实验中的运用和效果5.4 实际项目中的面向对象设计相关问题的解决方法5.5 实验总结和下一步改进计划总结:通过本次面向对象程序设计实验(二),学生能够更好地理解和应用面向对象的基本概念和设计原则,并能够灵活运用相关技巧进行程序开发和问题解决。
实验的实践部分更加加深了对面向对象程序设计的理解和实际应用能力的培养。
这些知识和技能对于学生未来的软件开发和项目管理工作具有重要意义。
实验-4-包、接口与异常处理(exception)

实验 4 包、接口与异常处理(exception)一、实验目的了解Java 中包(package)、接口(interface)和异常处理(exception)的作用,掌握包、接口、异常处理的设计方法。
二、实验要求1.了解Java 系统包的结构。
2.掌握创建自定义包的方法。
3.掌握使用系统接口的技术和创建自定义接口的方法。
4.理解系统异常处理的机制和创建自定义异常的方法。
三、实验内容(一)了解并使用Java 的系统包(二)创建并使用自定义包1.自定义包的声明方式<package〉<自定义包名〉声明包语句必须添加在源程序的第一行,表示该程序文件声明的全部类都属于这个包。
2.创建自定义包Mypackage在存放源程序的文件夹中建立一个子文件夹Mypackage.例如,在“E:\java\程序”文件夹之中创建一个与包同名的子文件夹Mypackage(E:\java\程序\Mypackage),并将编译过的class 文件放入该文件夹中。
注意:包名与文件夹名大小写要一致.再添加环境变量classpath 的路径,例如:E:\j2sdk1.4。
2_01\lib; E:\java\程序3.在包中创建类♦YMD.java 程序功能:在源程序中,首先声明使用的包名Mypackage,然后创建YMD 类,该类具有计算今年的年份,可以输出一个带有年月日的字符串的功能.♦编写YMD。
java 文件,源代码如下。
package Mypackage; //声明存放类的包import java。
util.*;//引用java.util 包public class P4_1_YMD {private int year,month,day;public static void main(String[]arg3){}public P4_1_YMD(int y,int m,int d){year = y;month = (((m>=1)& (m〈=12)) ? m :1);day = (((d〉=1) &(d<=31)) ?d : 1);}public P4_1_YMD(){this(0,0,0);}public static int thisyear(){return Calendar。
Java的抽象和接口实验报告

本文由我司收集整编,推荐下载,如有疑问,请与我司联系Java 的抽象和接口实验报告2016/09/09 1860 1、掌握抽象类和抽象方法的使用。
2、熟悉类中接口的定义和实现。
1、定义一个抽象类Shape,它包含一个抽象方法getArea(),从Shape 类派生出Rectangle 和Circle 类,这两个类都用getArea()方法计算对象的面积。
编写应用程序使用Rectangle 和Circle 类。
实验要求:定义Rectangle 和Circle 类的构造方法,初始化成员变量。
2、学校中有老师和学生两类人,而在职研究生既是老师又是学生。
(1)设计两个信息管理接口StudentInterface 和TeacherInterface,其中StudentInterface 接口包括setFee()方法和getFee()方法,分别用于设置和获取学生的学费,TeacherInterface 接口包括setPay()和getPay()方法,分别用于设置和获取老师的工资。
(2)定义一个研究生类Graduate,实现StudentInterface 接口和TeacherInterface 接口,它定义的成员变量有name(姓名),sex(性别),age(年龄),fee(每学期学费)pay(月工资)。
(3)创建一个姓名为“zhangsan”的研究生,统计他的年收入和学费,如果收入减去学费不足2000 元,则输出“You need a loan!”(需要贷款)的信息,否则输出“You income is enough!”信息。
实验要求:在Graduate 中实现各个接口声明的抽象方法。
四、实验结果(本实验源程序清单及运行结果或实验结论、实验设计图)第一题:package firsrpakeage;public class Test01 {public static void main(String[] args) {。
Java实验报告继承、多态、接口和异常处理

Java实验报告继承、多态、接⼝和异常处理实验5 继承、多态、接⼝和异常处理⼀、实验⽬的1、掌握Java的类和对象的声明和使⽤⽅法;2、掌握Java的类的继承和实现⽅法;3、掌握多态性在类的继承中的运⽤;4、掌握接⼝的定义与使⽤;5、掌握基本异常的处理机制;6、熟悉try语句与catch语句的搭配使⽤;7、了解有异常处理与没有异常处理的差别;8、多重catch语句的使⽤;9、使⽤Throws声明异常和Throw抛出异常。
⼆、实验环境1、PC微机;2、DOS操作系统或 Windows 操作系统;3、Java sdk程序开发环境、eclipse集成环境。
三、实验内容1. 设计三个类,分别是学⽣类Student,本科⽣类UnderGraduate,研究⽣类Postjgraduate,其中Student类是⼀个抽象类,它包含学⽣的基本信息如姓名、所学课程、课程成绩等,⽽Undergraduate类和Postgraduate类都是Student类的⼦类,这两个类计算课程成绩等级的⽅法有所不同,如下表所⽰。
假设某班级⾥既有研究⽣⼜有本科⽣,编写程序统计出全班学⽣2. 和Mobilephone具体实现,并设计⼀个应⽤程序类来使⽤这些类。
3.要求设计⼀个GUI图形窗⼝程序,该程序让⽤户输⼊⼀个星期中的任意⼀天的数字1-7,然后输出该数字所对应的是星期⼏。
四、实验步骤实验内容⼀1.建⽴package experiment5_1,其最终⽬录结构如下:2.建⽴Student类:package experiment5_1;public abstract class Student {final static int CourseNo = 3;String name;String type;int[] courses;String courseGrade;public Student(String name) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name; courses = new int[CourseNo];courseGrade = "" ;}public abstract void calculateGrade();public String getName( ) {return name;}public String getType( ) {return type ;}public String getCourseGrade( ) {return courseGrade;}public int getCourseScore(int courseNumber) {return courses[courseNumber];}public void setName(String name) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name;}public void setType(String type) {this.type = type;}public void setCourseScore(int courseNumber, int courseScore) { //按课程索引号设置课程成绩this.courses[courseNumber] = courseScore ;}}3.建⽴外部类(1)研究⽣类Postjgraduatepackage experiment5_1;public class postgraduate extends Student {public postgraduate(String name) {super(name);type = "研究⽣";}public void calculateGrade() {// TODO Auto-generated method stubint total = 0;double average = 0;for (int i = 0; i < CourseNo; i++) {total += courses[i];};average = total / CourseNo;if (average>=90&&average<100) courseGrade = "优秀"; else if (average>=80&&average<90) courseGrade = "良好"; else if (average>=70&&average<80) courseGrade = "⼀般"; else if (average>=60&&average<70) courseGrade = "及格"; else courseGrade = "不及格";}}(2)本科⽣类UnderGraduatepackage experiment5_1;public class undergraduate extends Student {public undergraduate(String name ) {super(name);type = "本科⽣";}public void calculateGrade() {int total = 0;double average = 0;for (int i = 0; i < CourseNo; i++) {total += getCourseScore(i) ;};average = total / CourseNo;if (average>=80&&average<100) courseGrade = "优秀"; else if (average>=70&&average<80) courseGrade = "良好"; else if (average>=60&&average<70) courseGrade = "⼀般"; else if (average>=50&&average<60) courseGrade = "及格"; else courseGrade = "不及格";}}4.编写代码测试函数package experiment5_1;public class polymorphism {public static void main(String[] args) {Student[] students = new Student[5];students[0] = new undergraduate("陈建平");students[1] = new undergraduate("鲁向东");students[2] = new postgraduate("匡晓华");students[3] = new undergraduate("周丽娜");students[4] = new postgraduate("梁欣欣");for (int i=0; i<5 ;i++) {students[i].setCourseScore(0,87);students[i].setCourseScore(1,90);students[i].setCourseScore(2,78);}for (int i=0; i<5 ;i++) {students[i].calculateGrade();}System.out.println("姓名" + " 类型" +" 成绩");System.out.println("-----------------------");for (int i=0; i<5 ;i++) {System.out.println(students[i].getName( )+" "+students[i].getType( )+" "+students[i].getCourseGrade( ));}}}实验内容⼆1.建⽴package experiment5_2,其最终⽬录结构如下:2.写接⼝Soundable代码:package experiment5_2;public interface Soundable {public void increaseV olume( );public void decreaseV olume( );public void stopSound( );public void playSound( );}3.创建三个类Radio、Walkman和Mobilephone具体实现,分别添加代码:// Mobilephone类package experiment5_2;class Mobilephone implements Soundable{public void increaseV olume( ) {System.out.println("增⼤⼿机⾳量");}public void decreaseV olume( ) {System.out.println("减⼩⼿机⾳量");}public void stopSound( ) {System.out.println("关闭⼿机");}public void playSound( ) {System.out.println("⼿机发出来电铃声");}}// Walkman类package experiment5_2;class Walkman implements Soundable { public void increaseV olume( ) { System.out.println("增⼤随声听⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩随声听⾳量"); }public void stopSound( ) {System.out.println("关闭随声听");}public void playSound( ) {System.out.println("随声听发出⾳乐"); }}// Radio类package experiment5_2;class Radio implements Soundable{ public void increaseV olume( ) { System.out.println("增⼤收⾳机⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩收⾳机⾳量"); }public void stopSound( ) {System.out.println("关闭收⾳机");}public void playSound( ) {System.out.println("收⾳机播放⼴播"); }}4.创建people类及编写测试代码://People类package experiment5_2;class People {public void listen(Soundable s) {s.playSound( );}}//测试代码package experiment5_2;import java.util.Scanner;public class InterfaceTest {public static void main(String[] args) {int i;People sportsman = new People( );Scanner scanner = new Scanner(System.in);Soundable[] soundDevice = new Soundable[3];//往声⾳设备数组中放⼊能发声的设备soundDevice[0] = new Radio( );soundDevice[1] = new Walkman( );soundDevice[2] = new Mobilephone();System.out.println("你想听什么? 请输⼊选择:0-收⾳机1-随声听2-⼿机");i = scanner.nextInt( );//开始听声⾳sportsman.listen(soundDevice[i]);soundDevice[i].increaseV olume( );soundDevice[i].stopSound();scanner.close();}}实验内容三1.建⽴package experiment5_3,其最终⽬录结构如下package experiment5_3;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class DateTransf extends JFrame implements KeyListener{/****/private static final long serialVersionUID = 1L;private static DateTransf frm;private static JTextField txt;private static JTextField data;DateTransf() {setTitle("数字与星期转换");setLocation(700, 300);setSize(400,130);}public static void main(String[] args) {frm = new DateTransf();frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setLayout(new GridLayout(2,2));txt = new JTextField(12);data = new JTextField(12);JLabel lable1 = new JLabel("输⼊数字:");JLabel lable2 = new JLabel("星期⼏:");frm.add(lable1);txt.addKeyListener(frm);frm.add(txt);frm.add(lable2);frm.add(data);frm.setVisible(true);}public void keyPressed(KeyEvent e) {if (e.getSource() == txt) {if (e.getKeyCode() == KeyEvent.VK_ENTER) // 判断按下的键是否是回车键{try {int number = Integer.parseInt(txt.getText());switch (number) {case 1:data.setText("Mon");break;case 2:data.setText("Tue");break;case 3:data.setText("Wen");break;case 4:data.setText("Thu");break;case 5:data.setText("Fri");break;case 6:data.setText("Sat");break;case 7:data.setText("Sun");break;default:JOptionPane.showMessageDialog(null, "您输⼊的数字不是1~7","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMATION_MESSAGE); break;}}catch (Exception e1) {// TODO: handle exceptionJOptionPane.showMessageDialog(null, "您输⼊的不是整数","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMA TION_MESSAGE); }}}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}}2.编译运⾏五、实验结果●实验内容⼀结果:●实验内容⼆结果:●实验内容三结果:六、实验⼩结1.这次实验的内容⽐较多,需要掌握Java的类和对象的声明和使⽤⽅法、Java的类的继承和实现⽅法、多态性在类的继承中的运⽤、接⼝的定义与使⽤、基本异常的处理机制、try语句与catch语句的搭配使⽤等等;2. 在实验过程中,重点是要区分好实例和类,灵活掌握类的调⽤。
JAVA实验报告心得

北京联合大学信息学院“面向对象程序设计”课程上机实验报告题目: java上机实验心得体会姓名(学号):专业:计算机科学与技术编制时间: 2012年12月19日版本: 1.0.0指导教师:北京联合大学-信息学院编制实验1 熟悉java运行环境实验目的:熟悉jdk环境和操作,编写简单的java应用程序。
心得体会:在该实验中,我碰到的问题是jdk环境变量的设置。
解决方法是通过查阅资料书和网上搜索相关解决方法及同学的有力帮助。
实验2 选择语句练习实验目的:正确理解并能够熟练操作和使用java的if和switch语句。
心得体会:我个人感觉有了c的编程基础,if和switch这些简单的流程控制语句运用起来比较轻松,实现简单的逻辑运算也跟c非常相近,所以上手比较快。
但是在这次程序中,首次涉及到了java程序的数据输入,与c区别很大。
但经过老师的讲解和查阅相关资料,基本明白相关的使用规则和注意事项。
在第二个小题中还涉及到了charat()方法,经查阅jdk 文档,知道charat()方法返回一个位于提供给它的参数索引处的字符,如: str.chatat(0)检索str中的第一个字符,str.charat(str.length()-1)检索最后一个字符。
我运用此方法解决了比较字符串间首字母异同的问题。
实验3 迭代练习实验4 方法的实现练习实验目的:声明、定义和调用方法,理解实参和形参的含义。
心得体会:在该实验中,我掌握如何写方法、调用方法,并掌握如何向方法中传递信息和从方法中返回信息。
方法声明为非void(构造方法除外)则需要用return语句返回一个相应类型的返回值。
实验5 简单类型数组练习实验目的:学习创建简单类型的数组,并能用循环语句处理数组。
心得体会:通过该实验,我学会了如何让建立简单类型的数组,并掌握了将数组作为方法的传入参数和返回值。
在该实验中,遇到的问题主要是如何将一个连续的多位数在存入数组时,每个数组元素只对应改多位数的一个组成数。
接口用法示例实验报告(3篇)

第1篇一、实验目的1. 理解接口的概念和作用。
2. 掌握接口的基本用法,包括接口的定义、实现和实现类。
3. 通过实际操作,加深对接口的理解和应用。
二、实验环境1. 操作系统:Windows 102. 开发工具:IntelliJ IDEA3. 编程语言:Java三、实验内容1. 接口的基本概念2. 接口的定义与实现3. 接口的多态性4. 接口的应用示例四、实验步骤1. 接口的基本概念(1)打开IntelliJ IDEA,创建一个新的Java项目。
(2)在项目下创建一个包,命名为“com.example”,用于存放实验代码。
(3)在包下创建一个接口,命名为“IAnimal”,用于定义动物的基本行为。
```package com.example;public interface IAnimal {void eat();void sleep();}```2. 接口的定义与实现(1)在“com.example”包下创建一个类,命名为“Dog”,实现“IAnimal”接口。
```package com.example;public class Dog implements IAnimal {@Overridepublic void eat() {System.out.println("狗吃肉");}@Overridepublic void sleep() {System.out.println("狗睡觉");}}```(2)在“com.example”包下创建另一个类,命名为“Cat”,实现“IAnimal”接口。
```package com.example;public class Cat implements IAnimal {@Overridepublic void eat() {System.out.println("猫吃鱼");}@Overridepublic void sleep() {System.out.println("猫睡觉");}}```3. 接口的多态性(1)在主类“Main”中创建一个方法,用于测试接口的多态性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四(一)、抽象类、接口
1.实验目的
(1)理解抽象类的意义和实际应用的一般模式,熟练掌握抽象类和抽象方法的定义以及抽象类的继承,尤其是子类是非抽象类的情况。
(2)理解接口的意义、实际应用的一般模式及与抽象类的区别,熟练掌握接的定义以及接口的继承和实现。
2.实验内容和步骤
(1)将实验三中形状类Shape的getArea()改为抽象方法,在不修改四种形状子类和测试类TestShape的基础上,保证执行TestShape 能够得到与实验四同样的结果。
(2)将实验三中形状类Shape改为接口,在不修改测试类TestShape的基础上,保证执行TestShape能够得到与实验三同样的结果。
(3)将附录1添加到工程,调试后保证源程序能编译成功,画出附录1中多个类间的关系图,按以下步骤调试程序。
注,以下5步没有先后关系。
①将AbsClass类前面abstract删掉,编译会出现什么结果,为什么?
②将AbsClass类中的abstract void absMethod();改为abstract void absMethod(){},编译会出现什么结果,为什么?
③删除AbsClass类中的absMethod()方法,AbsClass类可否通
过编译?
④将AbsSubClass类前面abstract删掉,编译会出现什么结果,为什么?
⑤将SubClass中的absMethod方法改名为absMethod2,编译会出现什么结果,为什么?
(4)在TestAbsctract的main方法中添加“
SubClass sc=new SubClass();
AbsClass ac=new AbsClass();
”,编译会出现什么结果,为什么?
(5)在TestAbsctract的main方法中添加“
SubClass sc=new SubClass();
AbsClass ac;
”,编译会出现什么结果,为什么?
(6)在TestAbsctract的main方法中添加“
SubClass sc=new SubClass();
AbsClass ac=new SubClass();
AbsClass ac2=sc;
sc.absMethod();
ac.absMethod();
ac2.absMethod();
”,可否通过编译,为什么?
附录1 TestAbsctract.java
abstract class AbsClass{
abstract void absMethod();
void commMethod(){
System.out.println("I am a common method in a abstract class.");
}
}
abstract class AbsSubClass extends AbsClass{
void commMethod3(){
System.out.println("I am a common method in a abstract sub class.");
}
}
class SubClass extends AbsClass{
void absMethod(){
System.out.println("I am a implemented method in a common sub class.");
}
}
public class TestAbstract {
public static void main(String [] args){
}
}
实验四(二)、异常
1.实验目的
(1)理解Java异常处理机制,理解为什么程序设计中需要异常、没有异常之前程序的遇到异常的结果。
(2)掌握Exception的分类,能够分辨哪些异常属于运行时异常,哪些异常属于已检查异常。
(3)掌握异常处理结构try、catch、finally,理解异常出现时和不出现时程序的执行流程。
(4)学会使用throw抛出异常,掌握何时选择处理异常何时选择抛出异常。
(5)学会使用throws声明为可能抛出异常的方法,掌握哪些方法必须声明可能抛出的异常。
2.实验内容和步骤
(1)比较附录1、附录2、附录3中的程序有何异常,分析运行的结果有何不同,再编译运行它们验证你的想法。
(2)将附录3中main函数后面的“t hrows Exception”去掉再编译会怎么样,为什么?
(3)在实验二中曾经实现过日期类MyDate,它包含一个含参数的构造方法MyDate(int year, int month, int day)、以及三个相应的设置方法setXXX(int arg)。
①现编写一个自定义的异常InvalidDateException。
当构造方法或设置方法接受的参数不符合实际要求时,抛出一个这个异常的实
例。
②在main函数中分别包含以下代码,捕获并打印异常信息
MyDate d1=new MyDate(-1, 13, 32);
MyDate d2=new MyDate(); d2.setDay(100);
附录1 NonException.java
public class NonException {
public static void main(String[] args) {
String s=null;
System.out.println("step 1.");
System.out.println(s.length());
System.out.println("step 2.");
System.out.println("step 3.");
}
}
附录2 CatchException.java
public class CatchException{
public static void main(String[] args) {
String s=null;
System.out.println("step 1.");
try{
System.out.println(s.length());
System.out.println("step 2.");
}catch(Exception e){
System.out.println(e.getMessage());
}
System.out.println("step 3.");
}
}
附录3 ThrowCatchException.java
class ThrowCatchException{
public static void main(String[] args) throws Exception{ String s=null;
System.out.println("step 1.");
try{
System.out.println(s.length());
System.out.println("step 2.");
}catch(Exception e){
throw new Exception("here,"+e.getMessage());
}
System.out.println("step 3.");
}
}。