文档库 最新最全的文档下载
当前位置:文档库 › 实验 4异常处理的练习(1)(2)

实验 4异常处理的练习(1)(2)

实验 4异常处理的练习(1)(2)
实验 4异常处理的练习(1)(2)

实验 4异常处理的练习

一、实验目的

了解 Java异常处理(exception)的作用,掌握异常处理的设计方法。

二、实验要求

4. 理解系统异常处理的机制和创建自定义异常的方法。

三、实验内容

处理程序运行时的错误和设计程序同样重要,只有能够完善处理运行时出错的程序,软件系统才能长期稳定地运行,异常处理就是说明如何处理程序运行时出错的问题。

了解异常处理机制

1.错误与异常

在程序执行期间,会有许多意外的事件发生。例如,程序申请内存时没有申请到、对象还未创建就被使用、死循环等,称为运行错误。根据错误的性质将运行错误分为错误与异常两种类型。

(1)错误

程序进入了死循环或内存溢出,这类现象称为错误或致命性错误。错误只能在编程阶段解决,运行时程序本身无法解决,只能依靠其它程序干预,否则会一直处于一种不正常的状态。

(2)异常

运算时除数为0,或操作数超出数据范围,打开一个文件时发现文件不存在,网络连接中断等等,这类运行错误现象称为异常。对于异常情况,可在源程序中加入异常处理代码,当程序出现异常时,由异常处理代码调整程序运行流程,使程序仍可正常运行直到正常结束。由于异常是可以检测和处理的,所以产生了相应的异常处理机制。而错误处理一般由系统承担。

对于一个应用软件,异常处理机制是不可缺少的。程序员必须在程序中考虑每一个可能发生的异常情况并进行处理,以保证程序在任何情况下都能正常运行。事实证明,一个仔细设计了异常处理的程序,可以长时间的可靠运行,而不容易发生致命的错误,如程序被迫关闭、甚至系统终止等等。所以学会进行异常情况处理对于想编写功能完善且具有实用价值的程序员来说是必不可少的。

2.异常发生的原因

(1)Java 虚拟机检测到了非正常的执行状态,这些状态可能是由以下几种情况引起的:·表达式的计算违反了 Java语言的语义,例如整数被 0除。

·在载入或链接 Java程序时出错。

·超出了某些资源限制,例如使用了太多的内存。

(2)Java程序代码中的 throw语句被执行。

(3)异步异常发生。异步异常的原因可能有:

·Thread的 stop方法被调用。

·Java虚拟机内部错误发生。

3.异常处理机制

发生异常后,怎么处理异常呢?

Java提供了异常处理机制来处理异常。分为两个步骤:

(1)抛出异常

Java是这样规定的:当语义限制被违反时,将会抛出(throw)异常,即产生一个异常事件,生成一个异常对象,并把它提交给运行系统,再由运行系统寻找相应的代码来处理异常。一个异常对象可以由 Java虚拟机来产生,也可以由运行的方法生成。异常对象中包含了异常事件类型、程序运行状态等必要信息。

(2)捕获异常

异常抛出后,运行时系统从生成异常对象的代码开始,沿方法的调用栈进行查找,直到找到包含相应处理的方法代码,并把异常对象交给该方法为止,这个过程称为捕获(catch)异常。

简单说异常处理机制就是:当语义限制被违反时,将会抛出异常对象,并将引起程序流程从异常发生点转移到程序员指定的处理异常方法代码处进行异常处理。

(六)了解异常对象的类型

在异常发生后,系统会产生一个异常事件,生成一个异常对象,有哪些异常对象呢?这些异常对象来自哪些类呢?

Java中的异常类具有层次结构组织。其中,Throwable类是 Error错误类和 Exception 异常类的父类,它是Object的直接子类。RuntimeException运行时异常类是Exception 异常类的子类。如图4.6所示。

图 4.6

(七)使用 try…catch语句处理异常

1.异常类型匹配的处理方式

(1)程序功能:首先说明"这是一个异常处理的例子",然后在程序中主动产生一个ArithmeticException类型被 0除的异常,并用catch语句捕获这个异常。最后通过ArithmeticException类的对象 e的方法 getMessage给出异常的具体类型并显示出来。 \

(2)编写使用 try…catch语句处理异常的程序,触发 ArithmeticException异常,然

后对异常进行处理。

注意:如果在catch语句中声明的异常类是Exception,catch语句也能正确地捕获,这是因为Exception是ArithmeticException的父类。如果不能确定会发生哪种情况的异常,那么最好指定 catch的参数为Exception,即说明异常的类型为Exception。

2.包含多个 catch子句的异常处理程序

程序功能:在try子句中设计两个可能出现的异常,一个是访问空对象异常。另外一个

是数组越界的异常,比如数组c的长度为1,定义c[42]是违法的。通过两个 catch子句分

别来捕获异常。

(八)使用 throw语句抛出异常

1. throw语句的作用

在上面的实验中,可以发现,异常对象是 Java运行时由系统抛出的。抛出异常也可以

通过使用throw语句实现。throw是 Java语言的关键字,用来告知编译器此处要发生一个

异常。throw后面要跟一个新创建的异常类对象,用于指出异常的名称和类型。

throw语句格式为:

<异常对象名()>;

程序会在throw语句处立即终止,转向try…catch寻找异常处理方法,不再执行throw

后面的语

句。

2. throw语句的使用

(1)编写带有 throw语句的程序TC5.java,源代码如下。

public class LX4_9 {

static void throwProcess() {

try {

throw new NullPointerException("空指针异常");

}

catch (NullPointerException e) {

System.out.println("\n在 throwProcess 方法中捕获一个"+e.getMessage());

throw e;

}

}

public static void main(String args[]) {

try {

throwProcess();

}

catch (NullPointerException e) {

System.out.println("再次捕获:"+e);

}

}

}

(2)编译并运行程序,结果如图 4.11所示。

图 4.11

(3)程序执行流程

程序首先调用 throwProcess方法,明确地抛出了一个 NullPointerException异常并将其命名为“空指针异常”。然后程序流程将转向throwProcess方法中的catch子句,输出一条信息。throwProcess方法的catch子句又抛出了一个同样的异常e。然后结束throwProcess方法的调用,执行 main方法中的 catch子句,再次捕获这个异常。

(九)使用 throws子句

1.throws子句的作用

throws子句一般用来表明在使用该方法时可能抛出异常但不捕获的异常。异常由系统来处理。 throws子句也可以指出抛出异常是 RuntimeException或自定义异常类,即异常的类型,以便准备调用其它方法捕获它,这种情况一般需要两个方法来分别处理抛出异常和处理异常。

2.只是在方法中抛出异常的程序

对于程序中无法处理的异常,可以使用throws子句在方法中抛出异常交由系统处理。

(1)程序功能:在程序中打开文件 a3.txt,因为该文件可能不存在或路径不对,所以存在

IOException类型异常的可能,因此这里使用 throws来抛出异常。

(2)编写只是抛出异常的程序文件LX4_10.java,源代码如下。

import java.io.*;

public class LX4_10 {

public static void main (String args[]) throws IOException {

FileInputStream fis = new FileInputStream("a3.txt");

}

}

(3)编译并运行程序,如果该文件在当前目录中不存在,将由系统自动给出异常报告。

3.带有捕获处理的 throws子句

(1)程序功能:在这个程序中的 mathod方法中使用 throws子句抛出异常,在 main方法中捕获处理异常。

(2)TC6.java,源代码如下。

import java.io.*;

public class LX4_11{

static void mathod() throws IllegalAccessException {

System.out.println("\n在 mathod 中抛出一个异常");

throw new IllegalAccessException();

}

public static void main(String args[]) {

try {

mathod();

}

catch (IllegalAccessException e) {

System.out.println("在 main 中捕获异常:"+e);

}

}

}

(3)编译并运行程序,

(十)使用 finally子句

1. finally子句的作用

当一个异常被抛出时,程序的执行流程就不再是连续的了,会跳过某些语句,甚至会由于没有与之匹配的catch子句而过早地返回,结束程序的运行。为了确保一段代码不管发

生什么异常都能被执行,可以使用 finally子句。每个 try语句至少都要有一个与之相配的catch或 finally子句。

从一个方法中返回到调用它的另外一个方法,可以通过return语句或通过一个没有被捕获的异常,但 finally子句总是在返回前被执行。

2.创建使用finally子句的程序文件LX4_12.java。

(1)程序功能:在类LX4_12的mathodA方法中使用try子句捕获异常,使用finally 子句处理异常。在类 LX4_11的 main方法中使用 try子句捕获 mathodA异常,

(2)编写 LX4_12.java程序,源代码如下:

class LX4_12{

static void mathodA() {

try {

System.out.println("\nmathodA 抛出一个异常");

throw new RuntimeException();

}

finally {

System.out.println("执行 mathodA 的 finally");

}

}

static void mathodB() {

try{

System.out.println("mathodB 正常返回");

return;

}

finally {

System.out.println("执行 mathodB 的 finally");

}

}

public static void main(String args[]) {

try {

mathodA();

} catch (Exception e) {

mathodB();

}

}

}

(3)编译并运行该程序。

注意:对于程序中需要处理的异常,一般要编写 try-catch-finally语句捕获并处理。

(十一)创建自定义异常类

1.创建自定义异常类程序文件LX4_13.java

(1)程序功能:通过继承 Exception异常类创建一个自定义异常类MyException,然后再创建一个主类 LX4_13使用自定义异常类MyException。

(2)编写 LX4_13.java程序文件,源代码如下。

class MyException extends Exception {

private int x;

MyException(int a) {

x=a;

}

public String toString() {

return "自定义异常类 MyException";

}

}

public class LX4_13 {

static void mathod(int a) throws MyException { // 声明方法会抛出MyException

System.out.println("\t此处引用 mathod ("+a+")");

if (a>10) throw new MyException(a); // 主动抛出 MyException

System.out.println("正常返回");

}

public static void main(String args[]) {

try {

System.out.println("\n进入监控区,执行可能发生异常的程序段");

mathod(8);

mathod(20);

mathod(6);

}

catch (MyException e) {

System.out.println("\t程序发生异常并在此处进行处理");

System.out.println("\t发生的异常为:"+e.toString());

}

System.out.println("这里可执行其它代码");

}

}

(3)编译并运行程序

JAVA 异常处理实验报告

实验三异常处理 [实验目的] 1.掌握异常处理方法及熟悉常见异常的捕获方法。 [实验内容] 1.练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch 子句的使用。 [实验步骤与要求] 第1题异常处理 要求声明定义两个Exception的异常子类:NoLowerLetter类和NoDigit类。再声明一个People类,该类中的void printLetter(char c)方法抛出NoLowerLetter异常类对象,void PrintDigit(char c)方法抛出NoDigit异常类对象。 [作业提交] 将代码贴在下面: class NoLowerLetter extends Exception{ String message; NoLowerLetter(char c){ message=c+"不是正数"; } public String getMessage(){ return message; } } class NoDigit extends Exception{ String message; NoDigit(char c){ message=c+"不是偶数"; }

public String getMessage(){ return message; } } class People{ public void printLetter(char c) throws NoLowerLetter{ if(c<0){ NoLowerLetter ex=new NoLowerLetter(c); throw(ex); } double number=Math.sqrt(c); System.out.println(c+"的平方根:"+number); } public void PrintDigit(char c) throws NoDigit{ if(c%2!=0){ NoDigit ex=new NoDigit(c); throw(ex); } double number=Math.sqrt(c); System.out.println(c+"的平方根:"+number); } } public class bianma{ public static void main(String args[]){ People p=new People(); try{ p.printLetter('Q'); p.printLetter(' '); } catch( NoLowerLetter e){ System.out.println(e.getMessage()); } try{ p.PrintDigit('d'); p.PrintDigit('a'); } catch( NoDigit e){ System.out.println(e.getMessage()); } } } 将结果运行截屏贴在下面:

JAVA实验3-异常处理和常用实用类-报告

信息工程学院1 《Java语言程序设计》实验报告 学院: 班级: 姓名: 学号: 成绩: 一、实习目标 (1)掌握Java的异常处理机制及相关实现方法; (2)掌握常用实用类的使用,熟悉使用JDK_API进行软件开发; (3)掌握Java中正则表达式的基本用法。 二、实验过程 实验题1 try-catch练习: JAVA_API: getMassage():返回此throwable或exception的详细消息字符串,正数除0 返回Infinity,负数除0返回-Infinity。 toString():对象利于null的详细消息字符串创建,则返回此对象的实际类的 名称,返回此throwable的简短描述。 printStackTrace():将错误的详细信息追踪到代码中具体某一行,将throwable 及其追踪输出至标准错误流。 代码截图: CatchError类: 实验报告的内容与格式按任课教师的要求书写。

MainTest类:

运行结果: 实验题2 用户自定义异常: 在ExceptionTest类中进行成绩录入和平均成绩的计算。 StasticScore类为成绩录入的具体方法,并进行异常检测。 ScoreException类继承StasticScore,输出错误提示。 代码截图: ExceptionTest类: ScoreException类:

StasticScore类:

运行结果:

实验题3 String & StringBuffer的使用: JAVA_API: Int indexOf(String str, int fromIndex)函数:返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。如果不存在,返回-1。 Static String valueOf(int i)函数:返回int参数的字符串表示形式。该表示形式正是单参数的interger.toString方法返回的结果。 Int indexOf(String str, int fromIndex)函数:返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。如果不存在,则返回-1。 Public StringBuffer append(String str)函数:将指定的字符串追加到此字符序列。按顺序追加String变量中的字符,使此序列增加到该变量的长度。 代码截图: TestOfKeyword类:

实验五异常处理

实验五异常处理 一、实验目的 1.熟悉异常的抛出与捕获的含义; 2.掌握异常捕获与处理的方法; 3.能自定义异常。 二、实验内容 1. 验证书上例子5,将运行结果保存至实验报告中,并简述Java语言处理异常的过程。 2. 现在多数学校的成绩管理都由计算机进行管理,这就需要有相应的应用程序。编写成绩管理应用程序,其中有成绩录入模块,成绩录入过程中,难免出现录入数据的类型出现错误,或录入的成绩不在合理的范围。在成绩录入过程中,若出现上述错误,程序应该如何处理。 程序框架如下,将代码补充完整,并调试出结果,并将运行结果保存至实验报告中:(1)首先定义两个异常类 负数异常.java文件源代码: class负分异常extends Exception //当录入了负分时。此处应用了自定义异常 { 负分异常(int i){ .println("分数为负数"); } } 高分异常.java文件源代码: class高分异常extends Exception //当录入分超过100时。应用了自定义异常 { 高分异常(int i ){ .println("分数过高"); } } 主类源文件代码: import .JOptionPane; public class ExceptionDemo { static final int number=2; int score[]=new int[number]; public void检查分数(int分数) throws负分异常,高分异常 //下面方法中判断如果录入的成绩不合理,则抛出异常,但本方法并不处理异常,仅声明了异常 { i f(分数 >100) throw new高分异常(分数); //通过throw,人工抛出异常 i f(分数 <0) throw new负分异常(分数); } public void录入成绩()

实验 异常处理

实验报告六 一【实验目的】 1.掌握异常的基本概念。 2.理解异常处理机制。 3.掌握创建自定义异常的方法。 二【实验内容】 Java提供了异常处理机制,当程序中发生异常时,程序产生一个异常事件,相应地生成异常对象。系统从生成对象的代码开始,沿方法的调用栈逐层回溯,寻找相应的处理代码,并把异常对象交给该方法处理。 实验1 录入如下源程序: 1、 public class Ex7_1 { public static void main(String[] args) { String output[] ={ "The ","quick ","brown ","fox ","jumps ", "over ","the ","lazy ","dog."}; int i =0; while(i<12){ System.out.print(output[i++]); } System.out.println("haha..."); } } 2、保存程序Ex7_1.java,编译运行程序,观察并分析程序的运行结果。The quick brown fox jumps

over the lazy dog.Exception in thread "main" https://www.wendangku.net/doc/81435691.html,ng .ArrayIndexOutOfBoundsException at Ex7_1.main(Ex7_1.java:9),可以看出,在第9行出现了数组下标越界的异常,导致了程序的中止,而程序的最后一条语句“System.out.println("haha...");”没有执行。 运行结果: 3、我们修改程序,加入异常处理,当程序发生异常时,经过异常处理后,程序还可以继续执行。 异常处理代码格式: try{ //可能有问题的代码 } catch(ArrayIndexOutOfBoundsException e) { //处理代码 break; } catch(Exception e1) { /// } catch(…..){ } 修改代码在可能出错的地方加入: try{ // } catch(ArrayIndexOutOfBoundsException e) {

JAVA实验四异常处理

实验四异常处理 实验目的 1、掌握异常的概念和Java 异常处理机制。 2、掌握异常的定义、抛出和捕捉处理。 实验内容与要求 1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果 import java.io.*; public class Ch31 { public static void main(String args[])throws IOException { int[] ko=new int[15]; int n,a; String x; BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter an integer:"); x=keyin.readLine(); n=Integer.parseInt(x); try { a=110/n; ko[15]=100; System.out.println("此描述无法执行!"); } catch(ArithmeticException e){ System.out.println("除数为0的错误"); } catch(ArrayIndexOutOfBoundsException f) { System.out.println("数组索引值大于数组长度的错误!"); } System.out.println("执行完catch的描述!!!"); } } 2.运行下面的程序,自己给出程序的运行结果。 import java.io.*; public class Ch32{ public Ch32(){ try{ int a[] = new int[2]; a[4] = 3; System.out.println("After handling exception return here?"); }catch(IndexOutOfBoundsException e){ System.err.println("exception msg:" + e.getMessage()); System.err.println("exception string:" + e.toString()); e.printStackTrace(); }finally{

实验四 异常处理

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继承自Exception a)、拥有两个构造方法,分别是DateException(String s)、public DateException(int year,int month,int day) throws DateException和一个成员方法Date getDate()。 b)、第二个构造方法能接收三个整数,拥有验证三个数据是否合法的能力,验证时,对于非法数据格式,采用抛出异常DateException,抛出异常时,携带错误提示信息。 c)、DateException类中,借助方法getDate()获得该组合的日期对象 三、实验指导: 输入一个日期判断是否合法,注意日期的表示范围。 四、实验要求: 1、在上机前写出全部源程序; 2、能在机器上正确运行程序; 五、程序清单: 六、运行结果: 七、调试分析及实验心得 . 1 .

数据库异常处理答案

一、实验/实习过程 实验题1在程序中产生一个ArithmeticException类型被0除的异常,并用catch 语句捕获这个异常。最后通过ArithmeticException类的对象e 的方法getMessage给出异常的具体类型并显示出来。 package Package1; public class除数0 { public static void main(String args[]){ try{ int a=10; int b=0; System.out.println("输出结果为:"+a/b); } catch(ArithmeticException e){ System.out.println("除数不能为0"+e.getMessage()); } } } 实验题2在一个类的静态方法methodOne()方法内使用throw 产生ArithmeticException异常,使用throws子句抛出methodOne()的异常,

在main方法中捕获处理ArithmeticException异常。 package Package1; public class抛出异常 { static void methodOne() throws ArithmeticException{ System.out.println("在methodOne中"); throw new ArithmeticException("除数为0"); } public static void main(String args[]){ try{ int a=10; int b=0; int c=1; System.out.println("输出结果为:"+a/b); } catch(ArithmeticException e){ System.out.println("除数不能为0"+e.getMessage()); } } }

实验八 异常处理

实验八异常处理 【开发语言及实现平台或实验环境】 Windows2000 或XP,JDK1.6与Jcreator4.0 【实验目的】 了解Java 中异常处理(exception)的作用。 掌握异常处理的设计方法。 【实验要求】 理解系统异常处理的机制和创建自定义异常的方法。 【实验步骤】 一.了解异常处理机制 1.错误与异常 在程序执行期间,会有许多意外的事件发生。例如,程序申请内存时没有申请到、对象还未创建就被使用、死循环等,称为运行错误。根据错误的性质将运行错误分为错误与异常两种类型。 (1)错误 程序进入了死循环或内存溢出,这类现象称为错误或致命性错误。错误只能在编程阶段解决,运行时程序本身无法解决,只能依靠其它程序干预,否则会一直处于一种不正常的状态。 (2)异常 运算时除数为0,或操作数超出数据范围,打开一个文件时发现文件不存在,网络连接中断等等,这类运行错误现象称为异常。对于异常情况,可在源程序中加入异常处理代码,当程序出现异常时,由异常处理代码调整程序运行流程,使程序仍可正常运行直到正常结束。 由于异常是可以检测和处理的,所以产生了相应的异常处理机制。而错误处理一般由系统承担。 对于一个应用软件,异常处理机制是不可缺少的。程序员必须在程序中考虑每一个可能发生的异常情况并进行处理,以保证程序在任何情况下都能正常运行。事实证明,一个仔细设计了异常处理的程序,可以长时间的可靠运行,而不容易发生致命的错误,如程序被迫关闭、甚至系统终止等等。所以学会进行异常情况处理对于想编写功能完善且具有实用价值的程序员来说是必不可少的。 2.异常发生的原因 (1)Java 虚拟机检测到了非正常的执行状态,这些状态可能是由以下几种情况引起的:·表达式的计算违反了Java 语言的语义,例如整数被0 除。 ·在载入或链接Java 程序时出错。 ·超出了某些资源限制,例如使用了太多的内存。 (2)Java 程序代码中的throw 语句被执行。 (3)异步异常发生。异步异常的原因可能有: ·Thread 的stop 方法被调用。 ·Java 虚拟机内部错误发生。 3.异常处理机制 发生异常后,怎么处理异常呢?Java 提供了异常处理机制来处理异常。分为两个步骤:(1)抛出异常

实验5 异常处理

实验五:java异常处理 实验目的: 1.了解Java异常处理机制的优点 2.了解Java异常的种类 3.掌握异常的捕获与处理 4.掌握异常的抛出 5.熟悉用户自定义异常 6.了解异常处理原则 实验步骤: 一.异常捕获和处理的练习 1. 下面源代码要捕捉的异常是除数为零和数组下标越界。通过修改a和c[]下标值体验程序。 2. 源代码如下: 3. 编写并完善上述代码,编译运行代码,查看程序执行结果。 ●按下条件分别修改数据,编译后运行,观察输出结果,分析在try…catch块里哪些语句没有被执行,为什么?块外哪些语句可被执行到,为什么? (1) 修改a=0,保持c[2]=200; (2) 保持a=10,修改c[3]=200; (3) 修改a=0,修改c[3]=200。

二.自定义异常的定义和使用的练习 1. 设计两个数求商的程序,并设定一个异常类,判断两数相除时,除数是否为零,当除数为零时将抛给自定义异常类,并输出除数为零。 2. 部分源代码如下: 3. 分析上述代码,将division方法体中的代码补充完整,判断输入的除数是否为0。如果为0,要抛出Di visorIsNotZeroException异常;如果不为0,则计算这个数的商。并按要求创建自定义异常类DivisorIsNotZ eroException。在main方法中已经给出如何输入数据和调用所写方法。 4. 代码完善后,编译运行代码,输入下表数据进行验证,如果抛出异常填“Y”,否则填“N”。 表6-2-1 测试数据 ●分析自定义异常是如何创建的?

import java.util.Scanner; class DivisorIsNotZeroException extends Exception { public DivisorIsNotZeroException(String message) { super(message); } } public class MyExceptionTest { public static double division(double dividend, double divisor) throws DivisorIsNotZeroException { Double d = new Double(divisor); if (0 == https://www.wendangku.net/doc/81435691.html,pareTo(0.0)) { throw new DivisorIsNotZeroException("除数为0"); } else { return (dividend / divisor); } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入被除数:"); double dividend = sc.nextDouble(); System.out.println("请输入除数:"); double divisor = sc.nextDouble(); try { double result = division(dividend, divisor); System.out.println("计算的商= " + result); } catch(DivisorIsNotZeroException e) { e.printStackTrace(); System.out.println(e.getMessage()); } } }

C#实验2流程控制异常处理

实验二流程控制异常处理 实验要求: 熟练掌握程序的三种流程结构,对于实际的应用问题能够理解并灵活运用;对于VS下中断模式,能够对于运行过程中的错误及时进行处理,掌握异常处理机制。 一、流程控制 1. 随机生成一个1-100之间的一个数,并由玩家进行猜测,提示玩家是猜大了还是猜小了或者猜对了。 using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int x; Random ra = new Random(); int y = ra.Next(1, 100); Console.WriteLine("输?入?1~100,退?出?输?入?0"); x = int.Parse(Console.ReadLine()); if (x!=0) { while (x!=0) { if (x < 0 || x > 100) { Console.WriteLine("输?入?值μ超?出?范?围§"); x = int.Parse(Console.ReadLine()); continue; } else if (x > y) Console.WriteLine("大洙?了?"); else if (x < y)

Console.WriteLine("小?了?"); else if (x == y) { Console.WriteLine("对?了?,?继ì续?输?入?y,退?出?输?入?n"); string s = Console.ReadLine(); if (s == "y") y = ra.Next(1, 100); else if(s=="n") return; else Console.WriteLine("输?入?不?正y确ā?); } x = int.Parse(Console.ReadLine()); } } else if (x == 0) return; Console.ReadKey(); } } } 2.已知在同一个笼子里总共有h只鸡和兔,鸡和兔的总脚数为f 只,其中,h和f由用户输入,求鸡和兔各有多少只? using System; using System.Collections.Generic; using System.Text; namespace鸡|兔?同? { class Program { static void Main(string[] args) { int chicken, rabbit; Console.WriteLine("请?输?入?鸡|和í兔?的?总哩?个?数簓:阰"); int h = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请?输?入?鸡|和í兔?的?脚?的?总哩?数簓:阰"); int f = Convert.ToInt32(Console.ReadLine()); while (f%2!=0)

Java作业实验六---异常处理

提交方式: 把文件名改为学号姓名,提交文档和源码(只需提交最顶层包文件夹) 实验六异常处理 一、实验目的 1.学会利用Try-catch-finally语句来捕获和处理异常; 2.掌握自定义异常类的方法。 二、实验要求 1.通过编程理解系统异常处理的机制和创建自定义异常的方法。 2.掌握基础类。 三、实验内容 (一)异常处理机制 1. 编写使用try…catch 语句处理异常的程序文件Demo4_1.java,

编译并运行程序,并把运行结果复制在下面 。 注意:如果在catch 语句中声明的异常类是Exception,catch 语句也能正确地捕获,这是因为Exception是ArithmeticException的父类。如果不能确定会发生哪种情况的异常,那么最好指定catch的参数为Exception,即说明异常的类型为Exception。 2、源文件是Demo3_2.java。要捕捉的异常是除数为零和数组下标越界。通过修改a和c[]下标值体验程序。 【思考】 ①先运行上面程序,观察运行结果。 ②按下条件分别修改数据,编译后运行,观察输出结果,分析在try…catch块里那些语句没有被执行,为什么? 块外那些语句可被执行到,为什么? 修改a=0,保持c[2]=200; 保持a=10,修改c[3]=200, 修改a=0,修改c[3]=200; ③再添加一个catch{Exception e}{ },位置在最前面,观察编译信息,说明什么? 3、编写Demo3_3.java 程序,计算两数相除并输出结果。使用两个catch子句,分别捕捉除数为0的异常和参数输入有误异常。源代码如下:

JAVA实验异常处理

成都大学实验报告 实验项目名称异常处理的编程练习 一、实验目的: 1、了解异常类的作用 2、掌握对异常的捕获和处理方式 二、实验内容(包括源程序及相关说明): 1、使用try….catch语句处理异常。在程序中主动产生一个ArithmeticException 类型被0 除的异常,并用catch 语句捕获这个异常。最后通过ArithmeticException 类的对象e 的方法getMessage 给出异常的具体类型并显示出来。源代码如下: public class EXP5_1 { public static void main(String[] args){ System.out.println("这是一个处理异常的例子"); try{ int i=10; i/=0; } catch(ArithmeticException e){ System.out.println("异常是:"+e.getMessage()); } finally { System.out.println("finally语句被执行"); } } } 2、异常类型不匹配的处理方式。源代码如下: public class EXP5_1 { public static void main(String[] args){

System.out.println("这是一个处理异常的例子"); try{ int i=10; i/=0; } catch(IndexOutOfBoundsException e){ System.out.println("异常是:"+e.getMessage()); } finally { System.out.println("finally语句被执行"); } } } 3、包含多个catch子句的异常处理方式.在try 子句中设计两个可能出现的异常,当 a 为0 时会发生异常。另外一个是肯定的异常,因为数组c 的长度为1,定义c[42] 是非法的。通过两个catch 子句分别来捕获异常。 public class EXP5_1 { public static void main(String[] args) { try { int a=args.length; System.out.println("\na = "+a); int b=42/a; int c[]={1}; c[42]=99; } catch (ArithmeticException e) { System.out.println("发生了被 0 除:"+e); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组下标越界:"+e); } } } 4、使用throw语句抛出异常. 在上面的实验中,可以发现,异常对象是Java 运行时由 系统抛出的。抛出异常也可以通过使用throw 语句实现。throw 是Java 语言的关 键字,用来告知编译器此处要发生一个异常。throw 后面要跟一个新创建的异常类对象,用于指出异常的名称和类型。 public class EXP5_1{ static void throwProcess(){ try {

实验六异常处理

实验六异常处理 云南大学信息学院面向对象技术导论 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: //除数为0 int 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语句");

实验室异常检验结果调查及处理程序改#精选.

实验室异常检验结果调查及处理程序 文件编码:SMP09―133 版本号:1

目录 一、目的 (1) 二、适用范围 (1) 三、责任 (1) 四、内容 (1) 五、附件 (8) 六、相关文件 (8) 七、变更历史 (8)

一、目的 建立一个实验室超标检验结果(OOS)及超趋势检验结果(OOT)和非期望结果(OOE)调查程序,以规范调查实验室超标检验结果(OOS)及超趋势检验结果(OOT)和非期望结果(OOE)的步骤及正确的处理方法,找出发生OOS/OOT/OOE的原因(生产、检验及其他),以便及时采取纠正预防措施,避免类似问题再次发生。 二、适用范围 本程序适用于实验室样品检测出现超标检验结果(OOS)及超趋势检验结果(OOT)和非期望结果(OOE)等异常检验结果时的处理方法(如原辅材料、包装材料、半成品、成品检验、分析方法验证、工艺验证及其他验证项目)。 三、责任 质控部、质保部、QC、相关部门负责人。 四、内容 定义: 1.1检验结果超标: 超出质量标准的检验结果(简称OOS结果)和超出趋势的检验结果(OOT结果)及非期望结果(OOE)的统称。 1.2超出质量标准的检验结果(简称OOS结果): 不符合既定的质量标准或接受标准的检验结果。任何有OOS结果的产品都不能被放行。 1.3超出趋势的结果(简称OOT结果): 此结果没有超出既定的质量标准或接受标准的限度,但已产生适当数量的数据不符合正常的结果分布。任何出现OOT结果的产品仍将要被放行。OOT只是用于内部管理控制的目的。 1.4. 非期望结果(简称OOE结果) 此实验结果超过历史的、预期的或先前的趋势限度。此结果没有超出既定的质量标准或接受标准的限度,但可能是不正常或者临近边缘的值(当主要检查项目,如含量检验结果等于上下限度值时,启动OOE调查程序)。OOE用于内部管理控制。 1.5有效结果: 在适当、科学并经批准的条件下所产生的检验结果,不管是否在质量标准或接受标准的限度之内。 1.6无效结果:

实验6 异常处理

实验6 异常处理 一、实验目的 1、掌握常见异常类的使用环境; 2、掌握异常处理的两种方法; 3、掌握自定义异常类的方法。 二、实验内容 1、在程序中处理常见异常。 2、自定义异常,并在程序中处理异常对象。 三、实验步骤 1、输入三角形三条边长,求三角形面积。处理可能发生的异常。class ValueException extends Exception{ public ValueException(){ System.out.println("三角形两边之和必须大于第三边"); } } class Triangle{ private double a,b,c; public Triangle(double a,double b,double c) { this.a=a; this.b=b; this.c=c; } public double area() throws ValueException { double p; double s; if(a+b<=c||b+c<=a||a+c<=b) throw new ValueException(); p=(a+b+c)/2; s=Math.sqrt(p*(p-a)*(p-b)*(p-c)); return s; } } class Test{ public static void main(String[] args) { try {Triangle t=new Triangle(1,4,5); System.out.println(t.area());

} catch(ValueException e){ e.printStackTrace(); } } } 2、定义Circle类,包含成员变量半径r和计算面积的方法getArea()。自定义异常类,当半径小于0的时候抛出异常。 class Rexception extends Exception{ Rexception(){ System.out.println("值错误"); } } public class Circle { double r; final double PI=3.1413; public Circle(double r) { this.r=r; } public double getArea()throws Rexception { if(r<=0) throw new Rexception(); return PI*r*r; } public static void main(String[] args) { try{ Circle c1=new Circle(-4); System.out.println("圆面积:"+c1.getArea()); }catch(Rexception e){ System.out.println("半径不能小于等于0"); } } }

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

信息科学与工程学院《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) {

模板与异常处理

实验14 模板与异常处理 一、实验目的 1.理解函数模板和类模板的概念。 2.会编写包含函数模板和类模板的程序。 3.正确理解C++的异常处理机制。 4.掌握异常处理的编程特点。 5.了解异常分类层次,常见系统异常。 6.学习自定义异常的定义及方法,异常的抛出与处理。 二、实验内容 1.编写一个求绝对值的函数模板,并测试。 2.请将冒泡排序函数改写成为模板函数并编写一个程序进行测试。 3.编写一个任意类类型AnyType模板,并请编写一个程序来使用该AnyType类模板。 4.编写求阶乘n!的函数,当用户的输入太大时(如51),会出现错误,使用异常处理机制来解决这一问题;如果n小于零,也抛掷一个异常进行处理。 5.编程并观察当库函数sqrt()的参数为负数,log()的参数为0时,系统会出现什么情况,请解决之。 6. 编写一个程序,用于根据用户输入的命令行参数数量来计算长方形、正方形、三角形的面积。如果输入的参数为一个、二个、三个则它们应分别对应正方形、长方形、三角形,如果没有参数,则通过异常处理方法显示错误消息。 三实验程序及结果 1、 #include template T fab(T a) {

if(a>0) return a; else return -a; } void main() { double a; cout<<"请输入一个数:"<<'\n'; cin>>a; cout< using namespace std; template void paixu(T *a,int i) {

相关文档