《Java程序设计》上机实验报告 实验四 异常类的定义及处理

合集下载

Java异常(Exception)处理以及常见异常总结

Java异常(Exception)处理以及常见异常总结

Java异常(Exception)处理以及常见异常总结⽬录前⾔异常简介异常类型总结前⾔很多事件并⾮总是按照⼈们⾃⼰设计意愿顺利发展的,经常出现这样那样的异常情况。

例如:你计划周末郊游,计划从家⾥出发→到达⽬的→游泳→烧烤→回家。

但天有不测风云,当你准备烧烤时候突然天降⼤⾬,只能终⽌郊游提前回家。

“天降⼤⾬”是⼀种异常情况,你的计划应该考虑到这样的情况,并且应该有处理这种异常的预案。

计算机程序的编写也需要考虑处理这些异常情况。

异常(exception)是在运⾏程序时产⽣的⼀种异常情况,已经成为了衡量⼀门语⾔是否成熟的标准之⼀。

⽬前的主流编程语⾔java也提供了异常处理机制。

异常简介Java中的异常⼜称为例外,是⼀个在程序执⾏期间发⽣的事件,它中断正在执⾏程序的正常指令流。

为了能够及时有效地处理程序中的运⾏错误,必须使⽤异常类,这可以让程序具有极好的容错性且更加健壮。

在 Java 中⼀个异常的产⽣,主要有如下三种原因:1. Java 内部错误发⽣异常,Java 虚拟机产⽣的异常。

2. 编写的程序代码中的错误所产⽣的异常,例如空指针异常、数组越界异常等。

3. 通过 throw 语句⼿动⽣成的异常,⼀般⽤来告知该⽅法的调⽤者⼀些必要信息。

Java 通过⾯向对象的⽅法来处理异常。

在⼀个⽅法的运⾏过程中,如果发⽣了异常,则这个⽅法会产⽣代表该异常的⼀个对象,并把它交给运⾏时的系统,运⾏时系统寻找相应的代码来处理这⼀异常。

我们把⽣成异常对象,并把它提交给运⾏时系统的过程称为拋出(throw)异常。

运⾏时系统在⽅法的调⽤栈中查找,直到找到能够处理该类型异常的对象,这⼀个过程称为捕获(catch)异常。

例 1为了更好地理解什么是异常,下⾯来看⼀段⾮常简单的 Java 程序。

下⾯的⽰例代码实现了允许⽤户输⼊ 1~3 以内的整数,其他情况提⽰输⼊错误。

package io.renren.config;import java.util.Scanner;/*** Created by LiYangYong*/public class TestException {public static void main(String[] args) {System.out.println("请输⼊您的选择:(1~3 之间的整数)");Scanner input = new Scanner(System.in);int num = input.nextInt();switch (num) {case 1:System.out.println("one");break;case 2:System.out.println("two");break;case 3:System.out.println("three");break;default:System.out.println("error");break;}}}正常情况下,⽤户会按照系统的提⽰输⼊ 1~3 之间的数字。

java---异常类匿名类实验报告

java---异常类匿名类实验报告

实验十四异常类、匿名类课程名称:面向对象程序设计实验项目名称:实验十四异常类、匿名类【实验目的】1.掌握Java异常类、嵌套类、匿名类。

【实验内容】一、异常类实验1.编译下面的程序,并回答问题。

class ExceptionTest1{public static void main(String[] args){int a=0,b=0;try{a = Integer.parseInt(args[0]); // 语句1b = 10; // 语句2}catch(NumberFormatException e){a = 1;}System.out.println(a);System.out.println(b);}}(1)执行上述ExceptionTest1类(在命令提示符下敲入java ExceptionTest1 99)运行结果:(2)执行上述ExceptionTest1类(在命令提示符下敲入java ExceptionTest1 a)运行结果:(3)比较上面两次运行的结果,说明原因。

(思考:执行语句1时发生异常,语句2执行没有?)执行语句1时没有发生异常,语句2执行发生异常。

因为在源代码中写有try{a = Integer.parseInt(args[0]); // 语句1b = 10; // 语句2}catch(NumberFormatException e){a = 1;}当在运行代码时,若在文件名后面输入的是整数,则不会发生异常,try代码块的下面的代码继续执行,而当输入的是字符或是字符串时,try代码块会捕获错误的信息,但是并没有运行下面的代码,如果try代码块中添加了finally部分,将原来的System.out.println(a);System.out.println(b);填入到finally中,则无论有没有发生异常,都能执行到finally中的代码。

2.编译下面的程序,并回答问题。

java实验报告上机过程遇到的问题及解决方法

java实验报告上机过程遇到的问题及解决方法

java实验报告上机过程遇到的问题及解决方法Java实验报告上机过程遇到的问题及解决方法在进行Java实验时,往往会遇到各种问题,这些问题可能与代码编写、调试、环境配置等方面有关。

在本文中,我将分享一些我在实验过程中遇到的常见问题以及相应的解决方法,希望能够帮助读者更好地进行Java实验。

1. 编译错误在编写Java代码时,经常会碰到编译错误。

编译错误可能是由于语法错误、缺少库文件、命名冲突等问题导致的。

解决这类问题的方法有:- 仔细检查代码,确保语法正确且符合Java语法规范。

常见的错误包括缺少分号、拼写错误等。

- 确保所使用的库文件已正确导入,并在代码中进行正确的引用。

- 对于命名冲突问题,可以尝试修改变量名或使用全限定名来解决。

2. 运行时错误在代码编译通过后,运行程序时可能会出现各种错误。

空指针异常、数组越界等。

解决这类问题的方法有:- 对于空指针异常,可以通过添加空指针判断来避免。

使用if语句判断对象是否为null再进行操作。

- 对于数组越界错误,需要确保访问数组元素时的索引值在合法范围内。

可以使用条件语句或循环来进行检查。

3. 调试问题在调试Java程序时,可能遇到程序无法正常运行或结果不符合预期的情况。

以下是一些解决方法:- 使用调试工具,如Eclipse、IntelliJ IDEA等,设置断点进行代码逐行调试。

通过观察变量的值和程序执行流程,可以找到问题所在。

- 添加日志输出语句,可以帮助我们查看程序在执行过程中的状态,从而找到错误原因。

- 使用try-catch块捕获异常,并在异常处理代码中添加适当的逻辑,以保证程序的正常运行。

4. 环境配置问题在进行Java实验时,可能需要进行一些环境配置,如设置类路径、引入第三方库等。

解决环境配置问题的方法有:- 确认所使用的开发工具是否已正确配置,并且已安装Java JDK和相应版本的JRE。

- 检查类路径是否正确设置,确保能够正确引用所需的库文件。

java异常处理方法及流程

java异常处理方法及流程

java异常处理方法及流程Java 异常处理方法及在 Java 编程中,异常处理是一项非常重要的技术。

通过适当的异常处理方法,可以使程序具备更好的稳定性和可读性,提高程序的健壮性。

本文将详细介绍 Java 异常处理的各个流程。

异常的基本概念异常是在程序执行期间产生的一种错误或异常情况。

Java 引入了异常处理机制来处理这些异常,以提高程序的可靠性和可维护性。

异常分为两种类型:1.受检异常(Checked Exceptions):受检异常在编译阶段必须进行处理,否则编译器将报错。

例如,IOException 是常见的受检异常。

2.非受检异常(Unchecked Exceptions):非受检异常是指不需要显式捕获或声明抛出的异常,编译器不会检查是否对其进行处理。

例如,NullPointerException 是常见的非受检异常。

异常处理的方法Java 提供了多种处理异常的方法,包括捕获异常和抛出异常。

下面分别进行介绍。

捕获异常是指通过使用try-catch语句块来捕获并处理异常。

try语句块用于包裹可能出现异常的代码,catch语句块用于捕获并处理异常。

try {// 可能抛出异常的代码块// ...} catch (ExceptionType1 e1) {// 处理异常类型1// ...} catch (ExceptionType2 e2) {// 处理异常类型2// ...} finally {// 可选的 finally 代码块,始终会被执行// ...}抛出异常当一个方法无法处理某个异常时,可以通过throw关键字手动抛出异常。

异常将会被传递给调用该方法的代码,并进一步处理。

public void someMethod() throws SomeException {if (someCondition) {throw new SomeException("Some error message");}使用异常的注意事项在使用异常处理时,需要注意以下几点:•捕获异常的顺序非常重要,应该从特定异常到一般异常的顺序进行捕获。

java异常处理实验心得

java异常处理实验心得

java异常处理实验心得Java异常处理实验心得Java异常处理是Java编程中非常重要的一部分,它可以帮助我们更好地处理程序中出现的错误和异常情况,提高程序的健壮性和可靠性。

在本次实验中,我学习了Java异常处理的相关知识,并进行了实验操作,下面是我的心得体会。

一、Java异常处理的基本概念Java异常处理是指在程序运行过程中,当出现错误或异常情况时,程序能够自动捕获并处理这些异常,以保证程序的正常运行。

Java 中的异常分为两种:受检异常和非受检异常。

受检异常是指在编译时就能够检测到的异常,必须在代码中进行处理,否则编译不通过。

非受检异常是指在运行时才能够检测到的异常,不需要在代码中进行处理,但是如果不进行处理,程序会抛出异常并终止运行。

Java异常处理的基本语法如下:try {// 可能会抛出异常的代码块} catch (Exception e) {// 异常处理代码块} finally {// 无论是否抛出异常,都会执行的代码块在try块中编写可能会抛出异常的代码,如果出现异常,就会跳转到catch块中进行异常处理。

catch块中的参数e是一个异常对象,可以通过它获取异常的相关信息。

finally块中的代码无论是否抛出异常,都会执行。

二、实验操作在本次实验中,我编写了一个简单的Java程序,用于模拟银行账户的存取款操作。

程序中可能会出现两种异常情况:余额不足和输入错误。

我使用了try-catch语句来捕获并处理这些异常,保证程序的正常运行。

具体实现过程如下:1. 定义一个BankAccount类,包含账户余额和账户号码两个属性,以及存款和取款两个方法。

public class BankAccount {private double balance;private String accountNumber;public BankAccount(String accountNumber, double balance) {this.accountNumber = accountNumber;this.balance = balance;public void deposit(double amount) {balance += amount;}public void withdraw(double amount) throws InsufficientFundsException {if (amount > balance) {throw new InsufficientFundsException("余额不足");}balance -= amount;}public double getBalance() {return balance;}public String getAccountNumber() {return accountNumber;}}2. 定义一个InsufficientFundsException类,用于表示余额不足的异常情况。

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. 在实验过程中,重点是要区分好实例和类,灵活掌握类的调⽤。

实验四 异常处理

实验四 异常处理

Java程序设计实验指导实验四异常处理一、实验目的1、了解Java的异常处理机制;2、掌握如何合理应用异常处理机制;3、学会自定义异常处理类。

上机练习之前,必须先完成程序的书写,再上机调试。

二、实验任务1、类SimpleException中有方法public static double Division(double x,double y) {if(y==0)throw new IllegalArgumentException("分母不能为0"); //手动抛出异常,对于双精度而言,除数为0可以得到无穷大的值,本不会报异常错误,这里手动强制报错return x/y;}主方法中有代码:double a=Double.parseDouble(args[0]);double b=Double.parseDouble(args[1]);System.out.println(Division(a,b));借助异常机制获所有可能出现的异常,并提示相关异常的出错信息。

最后,无论程序如何结束,保证程序都能输出语句“游戏结束!!!”2、自定义日期类异常,1)、定义一个程序DateExceptionTest,该程序主方法中:a)、采用Scanner类的对象来接收三个整数b)、对于非整数数据,能采用异常进行验证c)、用三个整数借助自定义类DateException构建出一个日期对象,并以“yyyy-mm-dd”的形式输出该日期对象。

d)、使用类2)同时要求,自定义类DateException继承自Exceptiona)、拥有两个构造方法,分别是DateException(String s)、public DateException(int year,int month,int day) throws DateException和一个成员方法Date getDate()。

b)、第二个构造方法能接收三个整数,拥有验证三个数据是否合法的能力,验证时,对于非法数据格式,采用抛出异常DateException,抛出异常时,携带错误提示信息。

《Java编程异常处理》PPT课件

《Java编程异常处理》PPT课件

24. }
25.}
13
1.//如果只是想把收到的异常再抛出,不必使用显性再抛出,使用
2.//隐性再抛出(比显性再抛出简单,效果是相同的)
3.//对于捕获异常,显性和隐性都必须在方法声明中明确声明
4.//显性再抛出,用throw语句,隐性再抛出方法体中没有任何抛出异常
的语句
5.//产生的异常自动抛出
15. }
16.}
17.
16
18.public class OverWriteException
19.{
20. public static void main(String[] args) throws Exception{
21.
Father f = new Son();
22.
f.myFunction();
meException.其中Exception类的直接或间接子类,除去RuntimException
类的直接或间接子类,称为捕获异常(必须处理的异常),其他的都为未
捕获异常.
Throwable
Error
Exception
......(未捕获异常) RuntimeException ......(捕获异
4.
try{
5.
int [] a = new int[3];
6.
a[8] = 12;
7.
}catch(ArrayIndexOutOfBoundsException ai){
8.
throw ai;//显性抛出异常
9.
}
10. }
11.
12
12. public static void a(){
13.
try{
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息科学与工程学院《Java程序设计》上机实验报告专业班级姓名学号实验时间指导教师成绩实验名称实验四异常类的定义及处理实验目的1)了解异常处理方法。

2)熟悉并掌握常见异常的捕获方法。

3)熟悉JDK中已经定义的若干异常类的层次结构。

4)掌握自定义异常类的创建方法。

主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)1.编写程序实现如下功能:生成并捕获到NegativeArraySizeException和IndexOutOfBoundsException类型的异常,并显示捕获到的异常信息。

然后在此基础上生成并捕获到NullPointerException类型的异常,并显示捕获到的异常信息。

1)实验源程序:public class TestException {public static void main(String[] args){outofBound();arraySize();nullPointer();}static void arraySize(){try{int p=-5;int test1[]=new int[p]; //不一定要是-5,只要小于0的就能捕获到无效数组长度的异常}}catch (NegativeArraySizeException e) {System.out.println("捕获异常:\n"+e);System.out.println(e.toString()); //把捕获的错误异常转变为字符串类型,传给println()方法,用以输入。

}finally{System.out.println("捕获完成\n"); } }static void outofBound(){try {int test2[]=new int[10];test2[100]=1; //超出数组长度} catch (ArrayIndexOutOfBoundsException e) {System.out.println("捕获异常:\n"+e);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)调试结果:将outofBound()方法中捕获异常的语句注释掉,重新编译程序,看看会不会有什么语法错误?如果没错误,执行程序看结果有什么不同?static void outofBound(){try { int test2[]=new int[10];test2[100]=1; //超出数组长度} //catch (ArrayIndexOutOfBoundsException e) {// System.out.println("捕获异常:\n"+e);// System.out.println(e.toString());// }主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)将array方法重新定义为如下形式:void arraySize() throws NegativeArraySizeException{……}然后修改arraySize方法中捕获NegativeArraySizeException异常的语句执行部分。

public class TestException {public static void main(String[] args){try{outofBound();arraySize();nullPointer();}catch(NegativeArraySizeException e){System.out.println(e.toString());}}......(中间代码不变)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);}e lsethrow 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 insufficient memory available.翻译:内存溢出错误如果没有足够的内存空间,一个类的实例创建的表达式,数组创建的表达式,或者一个字符串连接符表达式抛出一个内存溢出的错误.NegativeArraySizeExceptionAn array creation expression throws a NegativeArraySizeException if the value of any dimension expression is less than zero.翻译:创建大小为负的数组的异常任何维度表达式的值小于零,则数组创建的表达式抛出一个创建大小为负的数组的异常.NullPointerExceptionA field access throws a NullPointerException if the value of the object reference expression is null.A method invocation expression that invokes an instance method throws a NullPointerException if the target reference is null.An array access throws a NullPointerException if the value of the array reference expression is null.翻译:空指针异常如果对象引用表达式的值是空的,一个字段的访问抛出一个空指针异常。

如果是空的目标参考,一个方法调用表达式调用一个实例方法抛出一个空指针异常,。

如果数组引用表达式的值是空,数组访问抛出一个空指针异常。

ArrayIndexOutOfBoundsExceptionAn array access throws an ArrayIndexOutOfBoundsException if the value of the array index expression is negative or greater than or equal to the length of the array. 翻译:用非法索引访问数组时抛出的异常异常数组访问抛出一个用非法索引访问数组时抛出的异常,如果数组索引表达式的值是负或大于等于数组的长度。

ClassCastExceptionThrown to indicate that the code has attempted to cast an object to a subclass of which it is not an instance. For example, the following code generates a ClassCastException:Object x = new Integer(0);System.out.println((String)x);翻译:强制类型转换错误异常异常抛出,以指示代码试图将对象转换为一个子类,它不是一个实例。

例如,以下代码将生成一个ClassCastException:对象x =新的整数(0);输出((字符串)X);ArithmeticExceptionThrown when an exceptional arithmetic condition has occurred. For example, an integer "divide by zero" throws an instance of this class.翻译:算数异常当发生了一个特殊的算术条件时抛出。

相关文档
最新文档