第七次 java实验 紫金学院 异常
好久没更新了,在准备期末考,忘记更新了,今日就直接出代码,有不懂的可以私信我
前面是重点和难点,如果想搞明白的可以先看前面的
如果了解单纯想看代码请移驾——》
一、实验目的
- 熟悉异常的基本概念。
- 掌握异常的抛出方法、处理方式(重点)。
- 掌握自定义异常(重点、难点)。
二、实验原理及说明
1、异常的处理方式:
(1)使用try…catch…finally结构对异常进行捕获和处理
(2)通过throws和throw抛出异常
(3)以上两种方法的综合(经常使用)
2、try…catch…finally结构
try{
// 可能会抛出特定异常的代码段1; 2; 3;
}catch(异常类型1子 引用1){
// 如果引用1 被抛出,则执行这段代码4;
}catch(异常类型2父 引用2){
//如果另外的异常引用2被抛出,则执行这段代码5;
}
[finally{
//无条件执行的语句6;//一定会执行!!
}]
各个catch参数中的异常类都是Exception的已存在的某个子类,
表明try部分可能发生的异常
3、throw语句的格式如下:
throw new 异常类名(信息)
异常类名可以是系统异常类名,也可以是自定义的异常类名
“信息”是可选信息。若提供了信息,toString()方法的返回值中将增加该信息的内容
注意:一般情况,若想要自行丢出异常,可以使用throw关键字
4、与throw语句不同,throws选项仅需列出异常的类型名。
函数头 throws 异常类型名 {函数体}//声明
throw new 异常类型(信息);
5、自定义异常类可以通过继承Exception类来继承。格式如下:
class 自定义异常类名 extends Exception
{
类体
}
6、一个方法在声明时可以使用throws关键字声明要产生的若干个异常,并在该方法的方法体中具体给出产生异常的操作,即用相应的异常类创建对象,并使用throw关键字抛出该异常对象,导致该方法结束执行。程序必须在try catch块语句中调用能发生异常的方法,其中catch的作用就是捕获throw方法抛出的异常对象
三、实验内容
1、按要求完成下题:
编写OwnException类,要求继承Exception类;
编写OwnExceptionSource类,要求包含方法a(),a()抛出OwnException;
编写OwnExceptionHandler类,要求包含main(),在main()中调用OwnExceptionSource类的a(),并处理相关异常。
读取一个文本文件,并显示该文本的内容,同时写到另外一个文本文件中。
提示:使用File类进行文件或目录的操作。
2、编写DivisionByZero类,包含:
① division():要求执行10/0操作,并使用异常处理机制处理产生的异常;
② main():调用division();
③ 修改division():执行10/0不变,但不在方法中处理产生的异常,改将异常抛出;
④ 修改main():调用division()并处理其抛出的异常。
代码1
package test07;public class OwnException extends Exception{public OwnException() {this("ownexception");}public OwnException(String msg) {super(msg);}
}
---------------------------------------
package test07;public class OwnExceptionHandler {public static void main(String[] args) {OwnExceptionSource es=new OwnExceptionSource();try{es.a();System.out.println("try");}catch(Exception e){System.out.println("抱歉,这里是catch,抛出自定义的问题!");e.printStackTrace();}finally {System.out.println("欢迎使用,这里是fianlly!");}System.out.println("after");}
}
----------------------------------------
package test07;public class OwnExceptionSource {public void a() throws OwnException{throw new OwnException();}}
运行截图
代码2
package test07;import java.util.Scanner;public class DivisionByZero {public static void main(String[] args) {new DivisionByZero().Division();System.out.println("算数运算结束。");}public static void Division() {System.out.println("请输入a的值");Scanner scanner=new Scanner(System.in);int c=scanner.nextInt();int a=c;System.out.println("请输入b的值");Scanner scanner1=new Scanner(System.in);int d=scanner1.nextInt();int b=d;try{
// int x, y;
// x = 10;
// y = 0;
// System.out.println(x / y);System.out.println(a+"/"+b+"="+(a/b));}catch(ArithmeticException e){System.out.println("抱歉,这里是catch,算数运算有问题!");}finally {System.out.println("欢迎使用,这里是fianlly!");}}}
第七次 java实验 紫金学院 异常相关推荐
- 第八次 java实验 紫金学院 输入/输出流
一.实验目的 熟悉流--输入/输出流的基本概念. 掌握常用输入/输出流的使用. 掌握文件与文件字节流操作(重点). 二.实验原理及说明 在Java中把不同的数据源和程序间的数据传输(输入和输出或者数据 ...
- 第六次 java实验 紫金学院 泛型01
使用TreeSet和Comparator,编写TreeSetTest2类,要求对TreeSet中的元素1-元素10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列. Java ...
- 第六次 java实验 紫金学院 泛型02
类结构如图所示. 将类结构以代码形式表示,并对方法和构造器提供合理的实现: 使用TestBanking类对代码进行测试. 1.创建类 Account 按要求创建四个方法 packa ...
- 第五次实验 紫金学院 集合框架3
使用TreeSet和Comparator,编写TreeSetTest类,要求对TreeSet中的元素"HashSet"."ArrayList"."Tr ...
- 第五次实验 紫金学院 集合框架2
2. 写MyStack类,实现栈功能,要求在类中使用ArrayList保存数据.写MyStackTest类对栈功能进行测试. 本节实训主要是对栈的操作, 对栈和队列操作已经在数据结构那个专题里面有了, ...
- 第五次实验 紫金学院 集合框架1
写MyQueue类,实现队列功能,要求在类中使用ArrayList保存数据.写MyQueueTest类对队列功能进行测试. 咱们就直接上代码吧,内容很详细了,结合前面的几次实训,本事实训也是很简单的. ...
- java泛型实验报告,java实验报告异常集合类和泛型
java实验报告异常集合类和泛型 成绩: 面向对象原理与 Java 实践课程实验报告实验 3:异常.集合类和泛型姓 名 _ ___ 班 级 _ ___ 学 号 _ ___ 实验地点 _ ___ 实验时 ...
- java 实验4 异常
java 实验4 异常 参考文章: (1)java 实验4 异常 (2)https://www.cnblogs.com/cc123nice/p/10663139.html 备忘一下.
- java实验七实验报告_Java实验报告-7-风扇
Java实验报告 实验题目实验七综合实验风扇 代码: import java.awt.Col or; import java.awt.Graphics; import java.awt.event.A ...
最新文章
- Java黑皮书课后题第8章:*8.15(几何:在一条直线上吗)编程练习题6.39给出了一个方法,用于测试三个点是否在一条直线上。编写下面的方法,检测points数组中所有的点是否都在同一条直线上
- Google小组研发模式分析 1
- Vue源码分析系列四:Virtual DOM
- 解决安装SQL Server 2005开发版时,出现“SQL Server 服务无法启动 ”点击重试或取消的解决方法
- MySQL 5.6 my.cnf 参数说明(转)
- 从 linux内核来看进程与线程的异同
- VMware vRealize Operations Manager的内部版本号(2145975)
- Bitmap和Drawable的互相转换
- java 小总结,以后复习看以看
- RemObjects SDK 简介
- 查看抽取解压缩和修改war包
- 离散时间傅里叶变换Matlab实现
- 关于ddos你了解多少?
- 一分钟用HCaas搭建Frp内网穿透
- 6waves VP张伟:洞悉SLG等品类赛道,直击日本市场的趋势与机遇
- week4 day3/4 常用模块
- 233网校计算机二级百度云盘6,2014年计算机二级考试《 Access》机考操作题题库(6)...
- feof函数的滞后性
- html css分页特效,CSS样式表实现效果很好的分页效果源代码
- 《花开半夏》--2 两个人的世界