实验六异常处理
如何处理实验技术中的异常数据和结果

如何处理实验技术中的异常数据和结果在科学研究和实验技术中,异常数据和结果是常见的问题。
这些异常可能是由实验条件、仪器故障、实验操作等因素导致的。
如何正确处理这些异常数据和结果,对于研究的准确性和可靠性至关重要。
本文将就如何处理实验技术中的异常数据和结果进行探讨。
一、及时记录异常数据和结果在进行实验技术操作时,我们应注意及时记录异常数据和结果。
这些数据包括实验过程中出现的异常情况、记录的数据不符合预期值等。
及时记录异常数据可以帮助我们更好地分析问题,找出异常的原因,并及时采取措施进行修正。
二、确定异常数据的来源和原因一旦发现异常数据,我们需要深入研究,确定其来源和原因。
首先,我们可以检查实验操作过程中是否存在操作失误、使用了过期的试剂或仪器等。
其次,我们还可以检查实验条件是否稳定,实验设备是否正常工作。
通过排查和分析,我们可以尽可能地找到异常数据的来源和原因。
三、排除因素干扰在确定异常数据的来源和原因后,我们需要采取相应的措施排除干扰因素。
这包括调整实验条件,更换试剂或仪器,优化实验操作等。
通过排除干扰因素,我们可以减少异常数据的出现,提高实验数据的准确性和可靠性。
四、进行重复实验和数据验证在处理异常数据之后,我们应该进行重复实验和数据验证。
重复实验可以帮助我们确认实验结果的可靠性,并进一步验证修正后的实验技术是否有效。
在重复实验过程中,我们还可以注意一些操作细节,例如实验时间、温度要求、样本处理方法等,以提高实验结果的准确性。
五、寻求他人意见和建议在处理实验技术中的异常数据和结果时,我们也可以寻求其他人的意见和建议。
这些人可以是领域内的专家、同事、教授等。
通过与他们的交流和讨论,我们可以得到更广泛的视角和解决方法,从而更好地处理实验技术中的异常数据和结果。
六、注意数据分析和结果解释一旦处理好异常数据和结果,我们需要进行数据分析和结果解释。
在进行数据分析时,我们应该注意对数据进行统计分析,例如均值、标准偏差、方差等;对于实验结果的解释,我们应该采用科学严谨的方式,结合实验目的和原理进行推理和解析,以确保结果的可信度和说服力。
java基础实验报告

java基础实验报告Java基础实验报告引言:Java作为一种面向对象的编程语言,广泛应用于软件开发领域。
本次实验旨在通过一系列的实验任务,加深对Java基础知识的理解,并掌握Java编程的基本技巧。
实验一:Java环境搭建在本实验中,我们首先需要搭建Java开发环境。
Java开发工具包(JDK)是进行Java编程的基础,我们可以从Oracle官网上下载并安装最新版本的JDK。
安装完成后,我们需要配置环境变量,以便在命令行中能够直接运行Java相关的命令。
实验二:Java语言基础Java语言基础是进行Java编程的基石。
在本实验中,我们需要掌握Java的基本语法规则、数据类型和运算符等。
通过编写简单的程序,如计算两个数的和、判断一个数是否为素数等,加深对Java语言基础的理解。
实验三:面向对象编程面向对象编程是Java的核心特性之一。
在本实验中,我们需要学习Java中的类和对象的概念,并通过编写简单的类和对象来实现一些功能。
例如,创建一个学生类,包含姓名、年龄和成绩等属性,并实现一些与学生相关的操作方法。
实验四:异常处理异常处理是Java编程中重要的一部分。
在本实验中,我们需要学习Java中的异常处理机制,并通过编写代码来处理可能出现的异常情况。
例如,通过try-catch语句来捕获并处理用户输入非法字符的异常。
实验五:文件操作在实际的软件开发中,文件操作是非常常见的需求。
在本实验中,我们需要学习Java中的文件操作相关的类和方法,并通过编写代码来实现文件的读取和写入等功能。
例如,读取一个文本文件中的内容,并将其写入到另一个文件中。
实验六:多线程编程多线程编程是提高程序性能和效率的一种方式。
在本实验中,我们需要学习Java中的多线程编程相关的知识,并通过编写代码来实现多线程的应用。
例如,创建多个线程来同时下载多个文件,并实现进度条的显示。
结论:通过完成以上一系列的实验任务,我们对Java基础知识有了更深入的理解,并掌握了Java编程的基本技巧。
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. 在实验过程中,重点是要区分好实例和类,灵活掌握类的调⽤。
实验六_网络攻击与防范

《网络攻击与防范》实验报告(2)单击“下一步”按钮·进人如图 4-2 所示的“禁止功能选项”设定界面.根据需要进行设定。
例如。
如果选中“禁止右键菜单”复选框.当运行了该病毒后.右击时将无法弹出快捷菜单。
图 4-2 设置“禁止功能选项”(3)单击“下一步”按钮.进入如图 4-3 所示的“病毒提示对话框”设定界面时。
根据需要设置有关开机时病毒的执行情况。
当选中“设置开机提示对话框”复选框.并设置了提示框标题和内容等后,相关信息将以对话框方式在开机时自动显示图4-3 设置开机时病毒的执行情况(4)单击“下一步”按钮,进入如图 4-4 所示的“病毒传播选项”设定界面,根据需要进行设定。
当选中“通过电子邮件进行自动传播(蠕虫)”复选框时.病毒可以向指定数量的用户发送垃圾邮件。
图4-3 设置开机时病毒的执行情况下一步夏上一步图4-4“病毒传播选项”设定界面(5)单击“下一步”按钮,进入“IE 修改选项”设定界面,根据需要进行设定。
注意.当选中“设置默认主页”复选框后,会弹出“设置主页”对话框,需要读者输人要修改的IE 浏览器主页地址(即每次打开IE 浏览器时默认打开的主页地址).如图 4-5 所示图4-5设置IE浏览器修改选项(6)单击“下一步”按钮,在出现的如图 4-6 所示的对话框中选择所生成的脚本病毒存放的位置,单击“开始制造”按钮,生成病毒文件。
图4-6选择所生成的脚本病毒存放的位置此时,可看到相应路径下,已经生成了脚本病毒文件3.2感染病毒并观察感染后的系统变化情况(1)将生成的脚本病毒文件置于虚拟机中,在其上双击使之运行。
为保证完整准确地查看病毒的感染效果.可重启已经感染了病毒的虚拟机系统。
然后,根据病毒文件生成时的设置,观察系统感染了病毒后的表现情况。
主要操作步骤如下。
(2)观察系统文件夹下的异常变化,可以发现,在 C:\ Windows,C:\Windows\system32下多了不明来源的脚本文件。
实验室微生物超标异常处理流程

实验室微生物超标异常处理流程微生物超标在实验室里可是个挺让人头疼的事儿呢,不过别慌,咱有处理流程。
一、发现微生物超标。
在实验室做实验的时候,突然发现微生物超标了,这就像是本来好好走着路,突然踩了个小水坑。
这时候咱得赶紧停下来,不能装作没看见哦。
要先确定是哪个样本或者哪个区域的微生物超标了。
比如说,是培养皿里的菌落数多得吓人,还是在某个特定的实验操作台上检测出了过多的微生物。
这就像是破案一样,得先找到“案发地点”。
二、初步调查原因。
发现超标之后呢,就得像个小侦探一样开始调查为啥会这样啦。
是实验材料本身就有问题吗?就像你买的菜本身就不太新鲜,那做出来的菜可能就不好吃一样。
也许是实验仪器没有清洗干净呢?那些小仪器啊,就像我们的小宝贝,得经常给它们洗干净,要是有残留的脏东西,微生物可就爱在这里安家啦。
还有可能是周围的环境不太好,比如说实验室的通风不好,就像我们住在一个闷闷的小屋里,人都不舒服,微生物可就高兴了。
这时候我们要把可能的原因都记下来,哪怕是一些看起来很傻很天真的想法,说不定就是问题所在呢。
三、采取临时措施。
那找到一些可能的原因之后呢,咱们得做点临时的措施来阻止微生物继续“泛滥”。
如果是某个样本超标了,就把这个样本先单独放起来,就像把生病的小动物单独隔离起来一样,可不能让它把其他样本也“传染”了。
要是某个区域超标,那就赶紧对这个区域进行清洁和消毒。
可以用那些专门的消毒剂,像给这个区域洗个“消毒澡”,把那些微生物小坏蛋都赶跑。
这时候动作要快,就像消防员救火一样,不能慢悠悠的。
四、深入分析原因。
临时措施做了之后呢,咱们还得更深入地分析为啥会微生物超标。
这就不是那种表面的调查了,得像个严谨的科学家一样。
看看是不是实验操作流程有问题,是不是操作人员不小心把什么不该带进去的东西带进去了,就像不小心把外面的小虫子带进了干净的房间。
也许是实验室的温湿度控制得不好,微生物就喜欢在某些特定的温湿度下疯狂生长。
这时候我们可能要查阅一些资料,看看以前有没有类似的情况,就像找前辈们取取经。
java异常处理实验报告

java异常处理实验报告Java异常处理实验报告一、实验目的本次实验旨在通过编写Java程序,学习和掌握异常处理的相关知识和技巧,提高代码的健壮性和可靠性。
二、实验环境本次实验使用的开发环境为Eclipse,使用Java语言进行编程。
三、实验内容1. 异常的概念异常是指程序在运行过程中出现的意外情况,例如除零错误、数组越界等。
Java中的异常是以类的形式存在的,所有异常类都是Throwable类的子类。
2. 异常处理的方法Java提供了try-catch-finally语句用于处理异常。
在try块中编写可能会抛出异常的代码,如果发生异常,则会跳转到对应的catch块进行处理。
finally块中的代码无论是否发生异常都会被执行。
3. 异常的分类Java中的异常分为两种类型:受检异常(Checked Exception)和非受检异常(Unchecked Exception)。
受检异常需要在代码中显式地进行处理,否则编译器会报错;而非受检异常不需要强制处理。
4. 自定义异常除了使用Java提供的异常类,我们还可以根据需要自定义异常类。
自定义异常类需要继承Exception类或RuntimeException类,并重写相应的方法。
5. 异常处理的最佳实践在实际的软件开发中,异常处理是非常重要的一部分。
以下是一些异常处理的最佳实践:- 尽早捕获异常:在代码中尽量早地捕获异常,以避免异常的传播和影响其他部分的代码。
- 适当处理异常:根据具体情况,选择合适的处理方式,可以是打印日志、返回默认值、抛出新的异常等。
- 避免捕获过宽的异常:捕获异常时要尽量精确,避免捕获过宽的异常类型,以免屏蔽了真正的问题。
四、实验步骤1. 创建一个Java项目,并新建一个类用于实现异常处理的实验。
2. 编写代码,在try块中编写可能会抛出异常的代码。
3. 使用catch块捕获异常,并进行相应的处理,例如打印异常信息。
4. 在finally块中编写必要的代码,例如资源的释放。
检验结果异常及超标情况处理规程

检验结果异常及超标情况处理规程一、引言为保障生产过程中产品的质量和安全,对于每一个环节进行检验是必不可少的。
然而,有时候检验结果可能会出现异常或者超过标准限值的情况。
因此,制定一套完整的处理规程是非常重要的,以确保对异常情况的快速响应和适当处理。
二、异常检验结果的定义异常检验结果是指与预期结果或标准值有显著偏差的检验数据或指标。
异常结果可能表明生产或操作过程中的问题,需要进行进一步调查和处理。
三、异常检验结果处理程序1.立即通知相关人员:一旦发现异常结果,检验员应立即通知相关部门或负责人,以便他们能够采取必要的措施。
2.检查设备和方法:确认异常结果是否是由于设备故障或检验方法不准确导致的。
检查设备是否正常工作,并矫正任何错误或维修设备。
检查检验方法是否正确执行,并重新执行检验过程。
3.取样重测:如果可能,取相同样品的另一部分进行重测。
这有助于确认是否存在实际的问题,或者结果是否由于取样或实验误差引起的。
4.调查原因:如果异常结果经过重复测试后仍然存在,应进行详细调查,以确定导致异常结果的原因。
这可能包括回顾生产过程,检查原材料质量,了解操作员操作是否正确等等。
5.纠正措施:一旦原因确定,必须采取纠正措施来解决问题。
这可能包括更换设备,改变操作程序,改进培训等。
6.记录和报告:所有的异常结果和处理过程都应记录下来,并报告给相关部门或领导。
这将有助于对问题进行跟踪和分析,并确保类似问题不会再次发生。
四、超标情况处理程序1.立即通知:如果检验结果超过了设定标准值或法规限值,相关部门或负责人应立即被通知。
2.确认结果:验证检验结果是否准确。
可能需要进行重测,以确认结果的真实性。
3.调查原因:一旦确认结果准确,应立即进行调查,以找出导致超标的原因。
这可能涉及到生产过程中的错误,原材料的质量问题,或其他不可预见的情况。
4.采取措施:根据调查结果,采取必要的纠正措施来解决问题。
这可以包括停止生产,改变工艺流程,采取紧急修复措施等。
C语言中的异常处理

C语言中的异常处理异常处理是程序设计中非常重要的一部分,它可以帮助我们处理程序运行中可能发生的错误或异常情况,以保证程序的稳定性和可靠性。
在C语言中,异常处理主要通过错误码和异常处理函数来实现。
在C语言中,错误码通常以整数形式表示,一般情况下,函数执行成功时返回0,而发生错误时会返回一个非0的错误码。
我们可以根据函数返回的错误码来判断程序是否执行成功,并在程序中相应地处理这些错误。
通常可以使用if语句或switch语句来判断错误码,并进行相应的处理,比如输出错误信息、重新执行函数、跳出函数等。
另外,C语言中也提供了一些标准的异常处理函数,比如perror()函数和strerror()函数。
perror()函数可以输出一条描述错误原因的信息,通常这个信息包含了错误码对应的错误描述。
而strerror()函数可以根据给定的错误码返回一个描述错误原因的字符串。
这些函数可以帮助我们更方便地处理异常情况。
除了通过错误码和异常处理函数来处理异常,C语言中还提供了一种异常处理的机制,即setjmp()和longjmp()函数。
setjmp()函数用于设置一个标记点,可以在程序的任何地方调用longjmp()函数跳转到这个标记点,有点类似于goto语句,但更加安全。
这种机制适用于一些复杂的异常处理情况,比如在嵌套函数中处理异常。
在实际编码过程中,我们应该养成良好的异常处理习惯,尽量避免普通错误引起的程序崩溃或运行异常。
可以在关键函数中进行错误检查,并根据不同的错误情况进行相应的处理,比如重试、回滚、报错等。
同时,也要注意程序的健壮性和可靠性,避免出现一些潜在的异常情况。
总的来说,异常处理在C语言中是非常重要的,它可以帮助我们更好地处理程序中可能发生的错误或异常情况,提高程序的健壮性和可靠性。
通过合理地使用错误码、异常处理函数和异常处理机制,我们可以处理各种异常情况,并保证程序的正常运行。
希望大家在编程过程中能够重视异常处理,写出高质量的代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六异常处理云南大学信息学院面向对象技术导论 java程序设计大学教程实验【开发语言及实现平台或实验环境】Windows2000 或XP,JDK1.6与Jcreator4.0【实验目的】1. 掌握Java中异常的概念及含义。
2. 掌握异常的定义、抛出方法以及如何捕捉处理异常。
3. 熟悉如何将异常处理灵活运用到实际编程中。
【实验要求】1. 运行上课讲解的例子;2. 完成下列实验内容。
【实验内容】一、读懂并运行下列程序,体会Java中异常处理机制。
1. 分析并运行下面的程序。
参考源代码如下:import java.io.*;public class ExceptionTest{public static void main ( String args[] ){for ( int i = 0; i < 4; i++ ){int k;try {switch ( i ) {case 0: //除数为0int zero = 0;k = 911 / zero; break;case 1: //空指针int a[] = null;k = a[0]; break;case 2: //数组下标越界int b[] = new int[4];k = b[6]; break;case 3: //字符串下标越界char ch = "China”.charAt(5); break;}}catch ( Exception e ) {System.out.println("\nTestCase#"+i+"\n");System.out.println(e);}}}}问题:(1) 程序中设计循环有何目的?(2) 程序中将产生哪些异常?(3) 程序中的异常是如何抛出、捕捉及处理的?答:(1)获得全部的异常。
(2)除数为0,空指针,数组下标越界,字符串下标越界(3)抛出:当语义限制被违反时,将会抛出(throw)异常,即产生一个异常事件,生成一个异常对象,并把它提交给运行系统,再由运行系统寻找相应的代码来处理异常。
捕捉:异常抛出后,运行时系统从生成异常对象的代码开始,沿方法的调用栈进行查找,直到找到包含相应处理的方法代码,并把异常对象交给该方法为止,这个过程称为捕获(catch)异常。
处理:书写特殊的异常处理代码进行处理。
实验结果:2. 分析并运行下面的程序。
程序源代码如下:public class ExceptionTest{public static void main ( String args[] ){System.out.println("捕获不同类型的异常");try {int a=10/0;}catch ( ClassCastException e ) {System.out.println("发生异常"+e);}finally{System.out.println("执行finally语句");}}}问题:⑴程序产生何异常?⑵对于类型不匹配的异常,程序中采用什么方法处理的?答:(1)不能正常的捕捉异常(出现类型不匹配的异常)。
(2)对于类型不匹配的异常,程序中采用书写特殊的异常处理代码进行处理(把ClassCastException修改成ArithmeticException)。
修改后的实验结果:3. 分析并运行下面的程序。
程序源代码如下:public class except2{public static void main ( String args[] ){try {method();}catch (Exception e) { }}static void method (){try {createException ();System.out.println ("try语句被执行");}catch ( ArithmeticException e ) {System.out.println ( "catch语句被执行");}finally {System.out.println ( "finally语句被执行" );}System.out.print("d");}static void createException (){throw new ArrayIndexOutOfBoundsException();}}问题:(1)程序有何功能?给出程序的运行结果。
(2)finally语句的作用及其使用方法是什么?答:(1)利用try-catch-finally语句捕捉异常,利用try-catch-finally形成了一个异常处理保护块。
运行结果:finally语句被执行(2)finally语句块中放置受保护的代码;无论是否出现异常,这些代码都会执行。
其使用方法:在catch 语句后加finally{受保护的代码;}把ArithmeticException改成Exception后的运行结果:4. 自定义异常类:输入字母,是小写字母则直接输出,是大写字母则转为小写字母输出;若输入的不是字母,则抛出异常“输入的不是字母!”。
程序源代码如下:class MyException extends Exception{private char detail;MyException(char a){detail = a;}public String toString(){return "MyException[" + detail + "]输入的不是字母!";}}class except{static void change(char ch) throws MyException{System.out.println("Called change(" + ch + ")");if( ch<'A' || ( ch>'Z' && ch<'a' ) || ch>'z')throw new MyException(ch);else if( ch>='A' && ch<='Z' )System.out.println(ch+" change to " + (char)(ch+32));elseSystem.out.println("No change " + ch);}public static void main(String args[])throws java.io.IOException{char input = (char) System.in.read();try{change(input );}catch(MyException e){System.out.println("Caught " + e);}}}问题:(1) 程序功能是什么?叙述程序运行结果。
(2) 程序中是如何实现自定义异常的?(3) 修改程序,调换输入大、小写字母后的输出。
答:(1)把输入的大写字母变换为小写字母;若输入的不是字母,则提示错误;输入的是小写字母,则不转换。
实验结果:(2)定义一个Exception的继承类,在这个类中定义特殊的异常(关于输入的不是字母的异常);(3)修改后的程序:class MyException extends Exception{private char detail;MyException(char a){detail = a;}public String toString(){return "MyException[" + detail + "]输入的不是字母!";}}class except{static void change(char ch) throws MyException{System.out.println("Called change(" + ch + ")");if( ch<'A' || ( ch>'Z' && ch<'a' ) || ch>'z')throw new MyException(ch);else if( ch>='a' && ch<='z' )System.out.println(ch+" change to " + (char)(ch+32));elseSystem.out.println("No change " + ch);}public static void main(String args[])throws java.io.IOException{char input = (char) System.in.read();try{change(input );}catch(MyException e){System.out.println("Caught " + e);}}}实验结果:二、试编程完成下列任务。
1. 试设计boolean prime(int n)方法,可用来判断n是否为质数,若为质数,则响应true,若不是,则响应false,若n小于0,则抛出自定义异常ArgumentOutOfBounds。
(必做)实验代码:import java.io.*;public class TestNum {public static boolean prime(int n) throws ArgumentOutOfBoundException{if (n < 0)throw new ArgumentOutOfBoundException();//n小于0抛出异常if (n == 0||n==1){return false;}int m =(int)Math.sqrt(n);for(int i = 2;i <= m;i++){if (n % i == 0){return false;}}return true;}public static void main(String[] args) throws IOException { String b;for (int i = 10; i > 0; --i) {try {boolean flag = false;BufferedReader input = new BufferedReader(new InputStreamReader(System.in));b=input.readLine();flag = prime(Integer.parseInt(b));if(flag) System.out.println(Integer.parseInt(b)+"为质数"+flag);else System.out.println(Integer.parseInt(b)+"不是质数"+flag);}catch (ArgumentOutOfBoundException e) {}}}}class ArgumentOutOfBoundException extends Exception {//定义自己的异常类public ArgumentOutOfBoundException(){System.out.println("参数不能小于零!");}}实验结果:。