第六次java实验报告

时间:2022-03-04 09:12:28

Java实验报告

班级 计科二班 学号20188437 姓名 何磊

完成时间 2019/10/17

评分等级

实验四 类的继承

  1. 实验目的
    1. 理解异常的基本概念;
    2. 掌握异常处理方法及熟悉常见异常的捕获方法。
  2. 实验要求
    1. 练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch子句的使用。
    2. 掌握自定义异常类的方法。
  1. 实验内容
    1. 编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数组元素,使其产生ArrayIndexOutOfBoundsException异常。在catch子句里捕获此异常对象,并且打印"数组越界"信息,加一个finally子句,打印一条信息以证明这里确实得到了执行。
    2. 自定义异常类的使用

    车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。

    技术方案:

    编写一个Exception的子类DangerException,该子类可以创建异常对象,该异常对象调用toShow()方法输出"危险物品"。编写一个Machine类,该类的方法checkBag(Goods goods)当发现参数goods是危险品时(goods的isDanger属性是true)将抛出DangerException异常。
    程序在主类的main()方法中的try-catch语句的try部分让Machine类的实例调用checkBag(Goods goods)的方法,如果发现危险品就在try-catch语句的catch部分处理危险品。

  2. 实验过程(请自己调整格式)

(一)

(1)实验代码

package捕获异常;

public
class Capture {

public
static
void main(String[] args) {

System.out.println("******程序开始运行******");

int
array[]={0};

try{

array[1]=1;

}catch(Exception e){

System.out.println("数组出界:"+e);

}finally{

System.out.println("不管是否出现异常,都执行此代码");

}

System.out.println("******程序结束运行******");

}

}

第六次java实验报告

(2)运行结果

第六次java实验报告

(二)

(1)实验代码

package自定义异常类的使用;

public class DangerException extends Exception{ //自定义异常类DangerException,继承Exception类

public void toShow(Goods goods){ //定义toshow方法,接收Goods类参数

System.out.println(goods.getName()+"是危险物品!");     //输出异常信息

}

}

package 自定义异常类的使用; 

import java.util.ArrayList;
import java.util.Scanner; class Machine { static ArrayList<String> dangerGoods=new ArrayList<String>(); //创建ArrayList对象 public Machine(){ //定义Machine构造方法
super();
dangerGoods.add("汽油");
dangerGoods.add("炸弹");
dangerGoods.add("管制刀具");
dangerGoods.add("枪械");
dangerGoods.add("喷雾"); //增加元素到危险物品列表
} public static void checkBag(Goods goods) throws DangerException{ //定义checkBag方法检测物品
try{
goods.setisDanger(dangerGoods.contains(goods.getName())); //判断物品是否在危险物品列表中
if(goods.getisDanger()){
throw new DangerException(); //抛出异常
}
else{
System.out.println("检测通过"); //不是危险物品输出此内容
}
}catch(DangerException e){ //对异常进行处理
e.toShow(goods);
}
} public void addDangerGoods(String dangerGoods) { //定义addDangerGoods方法增加危险物品
Machine.dangerGoods.add(dangerGoods);
System.out.println("""+dangerGoods+"""+"已加入危险品列表");
} public void deleteDangerGoods(String dangerGoods){ //定义deleteDangerGoods方法删除危险物品
Machine.dangerGoods.remove(dangerGoods);
System.out.println("""+dangerGoods+"""+"已从危险品列表中删除");
} public void printDangerGoods(){ //定义printDangerGoods方法输出危险物品列表
System.out.print("危险物品列表:");
for(String e:dangerGoods){ //遍历输出
System.out.print(e+"、");
}
System.out.print("\n");
} public void menu(){ //定义menu方法
System.out.println("请输入数字以选择");
System.out.println("1:检查物品 2:增加危险物品 3:删除危险物品 4:查询危险品列表");
Scanner input=new Scanner(System.in);
switch(input.nextInt()){
case 1:System.out.println("请输入待检查的物品名称:");
Goods goods=new Goods(input.next()); //创建Goods对象
try {
checkBag(goods); //调用checkBag方法
} catch (DangerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}menu(); //调用menu方法
case 2:System.out.println("请输入待增加的危险物品名称:");
addDangerGoods(input.next());menu(); //调用addDangerGoods方法,调用menu方法
case 3:System.out.println("请输入待删除的危险物品名称:");
deleteDangerGoods(input.next());menu(); //调用deleteDangerGoods方法,调用menu方法
case 4:printDangerGoods();menu(); //调用printDangerGoods方法,调用menu方法
}
}
}

package自定义异常类的使用;

class Goods{

private String name; //定义name变量储存物品名称

private
boolean
isDanger; //定义isDanger变量储存物品危险属性

public Goods(String name) { //定义Goods构造方法用以初始化物品名称

super();

this.setName(name);

}

public String getName() {

return
name;

}

public
void setName(String name) {

this.name = name;

}

public
boolean getisDanger() {

return
isDanger;

}

public
void setisDanger(boolean
isDanger) {

this.isDanger = isDanger;

}

//Setter和Getter方法

}

package自定义异常类的使用;

public
class Test {

public
static
void main(String [] args){

Machine machine=new Machine(); //创建Machine对象

machine.menu();             //调用Machine中的menu方法

}

}

第六次java实验报告第六次java实验报告第六次java实验报告第六次java实验报告第六次java实验报告

(2)运行结果

请输入数字以选择

1:检查物品 2:增加危险物品 3:删除危险物品 4:查询危险品列表

4

危险物品列表:汽油、炸弹、管制刀具、枪械、喷雾、

请输入数字以选择

1:检查物品 2:增加危险物品 3:删除危险物品 4:查询危险品列表

2

请输入待增加的危险物品名称:

坦克

"坦克"已加入危险品列表

请输入数字以选择

1:检查物品 2:增加危险物品 3:删除危险物品 4:查询危险品列表

4

危险物品列表:汽油、炸弹、管制刀具、枪械、喷雾、坦克、

请输入数字以选择

1:检查物品 2:增加危险物品 3:删除危险物品 4:查询危险品列表

3

请输入待删除的危险物品名称:

喷雾

"喷雾"已从危险品列表中删除

请输入数字以选择

1:检查物品 2:增加危险物品 3:删除危险物品 4:查询危险品列表

4

危险物品列表:汽油、炸弹、管制刀具、枪械、坦克、

请输入数字以选择

1:检查物品 2:增加危险物品 3:删除危险物品 4:查询危险品列表

1

请输入待检查的物品名称:

坦克

坦克是危险物品!

请输入数字以选择

1:检查物品 2:增加危险物品 3:删除危险物品 4:查询危险品列表

1

请输入待检查的物品名称:

喷雾

检测通过

请输入数字以选择

1:检查物品 2:增加危险物品 3:删除危险物品 4:查询危险品列表

第六次java实验报告

  1. 结论

本次实验帮助我理解了异常的基本概念,掌握了异常处理方法及熟悉常见异常的捕获方法。相较于前几次实验难度有所提升。

本周学习了异常的基本概念、throws与throw关键字、自定义异常类。

异常类的结构图

第六次java实验报告

常见的error类

异常类名

用途

LinkageError

动态链接失败

VirtualMachineError

虚拟机错误

AWTError

AWT错误

3、常见运行时异常类

异常类名

用途

ArithmeticException

数学运算异常,比如除数为零的异常

IndexOutOfBoundsException

下标越界异常,比如集合、数组等

ArrayIndexOutOfBoundsException

访问数组元素的下标越界异常

StringIndexOutOfBoundsException

字符串下标越界异常

ClassCaseException

类强制转换异常

NullpointerException

当程序试图访问一个空数组中的元素,或访问一个空对象中的方法或变量时产生的异常。

4、常用的非运行时异常

异常类名

用途

ClassNotFoundException

指定类或接口不存在的异常

IllegalAccessException

非法访问异常

Ioexception

输入输出异常

FileNotFoundException

找不到指定文件的异常

ProtocolException

网络协议异常

SocketException

Socket操作异常

MalformedURLException

统一资源定位符(URL)的格式不正确的异常

异常类常用方法

常用非法

用途

Void String getMessage()

返回异常对象的一个简短描述

Void String toString()

获取异常对象的详细信息

Void printStackTrace()

在控制台上打印异常对象和它的追踪信息

第六次java实验报告的更多相关文章

  1. 第六周&amp&semi;java实验报告四

    实验报告: 一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:rad ...

  2. 第六周&amp&semi;Java实验报告四&lpar;类的继承&rpar;

    一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆 ...

  3. JAVA实验报告四及第六周总结

    JAVA第六周作业 实验报告四 第一题 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆的半径. 2.圆类Circle的方法成员: Circle():构造 ...

  4. 第六周学习总结&amp&semi;java实验报告四

    第六周学习总结&java实验报告四 学习总结: 上一周因为接近国庆假期,所以老师没有讲太多的新知识点,只要是带我们一起做了一个动物模拟变声器的实验,进一步了解和学习到继承的 有关知识点和应用: ...

  5. Java实验报告五:Java网络编程及安全

    Java实验报告五:Java网络编程及安全                                                                               ...

  6. 20135231 JAVA实验报告三:敏捷开发与XP实践

    ---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习 ...

  7. JAVA实验报告及第七周总结

    JAVA第六周作业 实验报告五 第一题 1.设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法. 继承该抽象类定义三角型.矩形.圆. 分别创建一个三角形.矩形.圆存对象,将各类图 ...

  8. Java实验报告二:Java面向对象程序设计

    Java实验报告二:Java面向对象程序设计                                                                               ...

  9. 20145203盖泽双:Java实验报告二

    Java实验报告二:Java面向对象程序设计 实验要求: 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验内容 ...

随机推荐

  1. jsonp使用规范

    这两天花了很多时间弄研究jsonp这个东西, 可是无论我怎么弄..TMD就是不进入success函数,并且一直进入error函数...让我着实DT啊. 可以看下我之间的提问(这就是我遇到的烦恼).. ...

  2. 单片机IO处理 电容触摸按键

    原理说明: 通过检测感应按键PAD的电容量变化来判断是否有触摸动作.当手指触摸PAD时,电容量增加,充放电时间变长. 本方案中利用M48的20个双向IO口实现了20个触摸按键,而且所用原器件最少.其中 ...

  3. SimpleDateFormat使用简析

    title: SimpleDateFormat使用简析 date: 2016-07-11 11:48:20 tags: Java SimpleDateFormat --- [转载自博客:http:// ...

  4. 学习CSS一些事(上)

    p.s:这是我在学习中总结出来知识,如有不对,请多包涵.谢谢. CSS样式:行内样式,内部样式,外部样式,他们的优先级是:行内,内部,外部,遵循就近原则. 一.HTML+CSS布局分为三大类,一是流式 ...

  5. 【Netty】ChannelHandler和ChannelPipeline

    一.前言 前面学习了Netty的ByteBuf,接着学习ChannelHandler和ChannelPipeline. 二.ChannelHandler和ChannelPipeline 2.1 Cha ...

  6. 分而治之(Work Breakdown Structure&comma; WBS)

    不知道大家有没有和我一样的情况,就是想写一篇博客,不知道从何写起,如何组织语言,如何安排这篇博客的要交待的事情的前因后果:如果在写作过程中被打断,又不知道如何重新拾起键盘,从哪里写起."就如 ...

  7. 【转】福利大放送--不止是Android,Github超高影响力开源大放送,学习开发必备教科书

    [福利大放送]不止是Android,Github超高影响力开源大放送,学习开发必备教科书   目录 一.写在前面 1.free-programming-books 2.oh-my-zsh 3.awes ...

  8. 单链表数据结构 - java简单实现

    链表中最简单的一种是单向链表,每个元素包含两个域,值域和指针域,我们把这样的元素称之为节点.每个节点的指针域内有一个指针,指向下一个节点,而最后一个节点则指向一个空值.如图就是一个单向链表 一个单向链 ...

  9. xtrabackup备份MySQL报错:InnoDB&colon; Error number 24 means &&num;39&semi;Too many open files&&num;39&semi;

    xtrabackup备份MySQL报错:InnoDB: Error number 24 means 'Too many open files' 1.使用xtrabackup备份MySQL时出现如下报错 ...

  10. 批处理FINDSTR正则表达式用法实例分析

    1.findstr . 2.txt 或 Findstr "." 2.txt 从文件2.txt中查找任意字符,不包括空字符或空行 2.findstr .* 2.txt 或 finds ...