文档视界 最新最全的文档下载
当前位置:文档视界 › 实验五 异常处理

实验五 异常处理

实验五   异常处理
实验五   异常处理

实验五异常处理

一、实验目的

1.学会利用Try-catch-finally语句来捕获和处理异常;

2.掌握自定义异常类的方法。

二、实验要求

1.通过编程理解系统异常处理的机制和创建自定义异常的方法。

2.掌握基础类。

三、实验内容

(一)异常处理机制

1. 编写使用try…catch 语句处理异常的程序文件Demo4_1.java,

源代码如下:

public class Demo3_1{

public static void main(String[] arg3) {

System.out.println("这是一个异常处理的例子\n");

try {

inti=10;

i /=0;

}

catch (ArithmeticException e) {

System.out.println("异常是:"+e.getMessage());

}

finally {

System.out.println("finally 语句被执行");

}

}

}

编译并运行程序。

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

2、源文件是Demo3_2.java。要捕捉的异常是除数为零和数组下标越界。通过修改a和c[]下标值体验程序。

public class Demo3_2 {

public static void main (String[] args){

int a, b;

int c[]={1,2,3};

try{ a=10;

b=100/a;

System.out.println ("当前a值:"+a);

c[2]=200;

System.out.println ("当前数组长:"+c.length);

}

catch(ArithmeticException e){

System.out.println ("除零错误:"+e); }

catch(ArrayIndexOutOfBoundsException e){

System.out.println ("数组下标越界:"+e); }

finally{

System.out.println ("我是finally"); }

System.out.println ("我能被正常执行到");

}

}

【思考】

①先运行上面程序,观察运行结果。

②按下条件分别修改数据,编译后运行,观察输出结果,分析在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的异常和参数输入有误异常。源代码如下:

import java.io.*;

class Demo3_3{

publicstaticvoid main(String args[ ]) {

try{

BufferedReaderstrin=new BufferedReader

( new InputStreamReader(System .in));

System .out .print("请输入除数:");

String cl=strin .readLine();

int a=Integer .parseInt(cl);

System .out .print("请输入被除数:");

cl=strin .readLine();

int b=Integer .parseInt(cl);

int c=b/a;

System .out .println("商为:"+c);

}

catch(NumberFormatException e){

System .out .println("请输入整数!"); //e .printStackTrace();

}

//捕获除数为0的异常

catch(ArithmeticException e){

System .out .println("除数不可以0!");

//e .printstackTrace();

}

//捕获与I/O有关的异常

catch(IOException e){e.printStackTrace();}

//捕获数值转化时的异常,如不能将字符转化成数值

}

}

编译并运行,当输入除数为0时,将有异常出现,当输入的不是整数时,如将30输成了3o,出现的是另一种异常。

(二)自定义异常类

4、注意throw、throws的使用。源文件是Demo3_4.java。

package sy3;

classMyException extends Exception{

public String toString(){

return "除数等于零";

}

}

class DIV{

double div(double x,double y) throws MyException{

if(y==0) throw new MyException();

else return (x/y);

}

}

public class Demo3_4{

public static void main (String[] args) {

double z;

DIV d=new DIV();

try{

z=d.div(100,0);

System.out.println ("当前z值:"+z);

}catch(MyException e){

System.out.println (e.toString());

}

}

}

【思考】

①修改try...catch中语句z=div.DIV(100,0)入口参数,观察运行结果。

z=d.div(100,10);

z=d.div(100,0);

②将try...catch语句注释掉,观察编译信息。

③上面条件保持,在main函数后面加上throws MyException再重新编译,能否通过?然后运行观察结果,

得到什么结论?

2.编写程序Demo3_5.java,包含自定义异常,当输入数值为13和4时抛出该异常。源代码如下:

class Ex3_5 extends Exception{

Ex3_5 (String msg){

super(msg);

}

}

class Demo3_5{

privateint x;

void setX(int x) {

this.x=x;

}

void f1() throws Ex3_5{

if(x==13)

thrownew Ex3_5("I don’t like 13!");

elseif(x==4)

thrownew Ex3_5("I don’t like 4!");

else

System .out.println(100/x);

}

publicstaticvoid main(String args[ ]) {

Demo3_5 a=new Demo3_5();

try {

a.setX(5);

//a.setX(13);

//a.setX(4);

//a.setX(0);

a.f1();

}

catch(Ex3_5 e) {

System.out.println("get message:"+e.getMessage());

}

}

}

【思考】编译并运行,分别取消注释上面程序中被注释的语句。当释放a.setX(13)语句后,查看运行结果,当释放a.setX(4)语句后,查看运行结果,当释放a.setX(0)语句后,查看运行结果。

四、实验练习题

1、编写Java程序,创建数组后,对数组访问时发生的数组越界.实验使用try-catch语句处理该异常。运行结果如图所示。

import java.io.*;

publicclass Demo3_6 {

publicstaticvoid main(String[] arg3) {

try{

BufferedReaderstrin=new BufferedReader ( new InputStreamReader(System .in));

System.out.println("请输入创建数组的个数:\n");

String cl=strin.readLine();

int a=Integer .parseInt(cl);

System.out.println("数组创建完毕!!您要查找那个元素?\n");

String c2=strin.readLine();

int b=Integer .parseInt(c2);

}

catch(ArrayIndexOutOfBoundsException e){

System.out.println ("这里出现的错误类型是:数组下标越界!"+e);

}

finally{

System.out.println ("主程序正常结束!");

}

}

}

实验室偏差处理程序

实验室偏差处理程序 1适用范围 本标准适用于实验室样品检测出现超出规定结果(OOS)和异常分析结果(AAR)时的处理方法(如:原辅材料、包装材料、中间体、成品检验,分析方法验证、工艺验证和其它验证项目)。 2职责 检验员:出现超规定的结果与异常结果时,立即报告主管及时填写《实验室调查报告》。 QC主管:负责实验室偏差的处理,审核《实验室调查报告》所填的内容是否正确、真实、齐全。 3内容 3.1定义 3.1.1超出规定结果(Out Of Specification·OOS) 实验结果不符合规定的限度范围(质量标准、分析方法验证、工艺验证等技术参数)。 3.1.2异常分析结果(Atypical Analytical Results·AAR) 3.1.2.1相同的制备样品重复实验结果或重复制样的检验结果精度不好,可能影 响到结果的判断。 3.1.2.2某个结果,由我们对被测物料、实验室样品和检测步骤已获经验可知其 异常。(可包括认为异常的规定范围内的结果) 3.2步骤 3.2.1QC检验员在检验中一旦得到OOS或AAR立即报告QC主管。 3.2.2调查人员由检验员和QC室主管组成,共同进行实验室调查。 3.2.2.1检验员和QC主管将对所获原始数据进行回顾,对实验步骤作讨论,对 所用仪器的再检查,并填写《实验室调查报告》表。 3.2.2.2若调查清楚地证明:OOS或AAR是由于实验室的差错所致(如人、仪 器、试剂),则剔除已得数据,并重新检测。重检须经QC主管同意,任 何未经同意的重检是不规范的行为。重检记入《实验室调查报告》表中。 重新检测所需样品用原始实验室样品,若有证据证明原有样品不具代表

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()); } } } 将结果运行截屏贴在下面:

实验五异常处理

实验五异常处理 一、实验目的 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录入成绩()

第6章 Delphi程序异常处理与调试技术

第六章程序异常处理与调试技术 在Delphi中有两种程序错误,一种是编译错误,在程序编辑阶段就可以由编译器发现并给出提示。另外一种是运行错误,这类错误不能在编译阶段查出,只能在程序执行时发现,称为运行错误。 Delphi提供了一种机制来处理运行错误,保护程序的正常执行,这种机制就是异常处理。异常处理的方法是把正常的执行程序同错误的处理程序分离开来,这样可以保证在没有错误时,程序正常执行,当发生错误时,执行错误处理部分的程序,然后程序跳出保护模块,继续执行后续的程序。 6.1 Object Pascal异常的种类 异常的种类:Delphi内建的异常类,程序员自定义的异常类。 异常基类及其属性和主要方法:在Delphi中,所有异常的基类是Exception 类。所有其他异常类都是由该类派生而来。 1. exception属性 该类有两个基本属性:HelpContext和Message。 (1)Exception.HelpContext属性 该属性的定义如下: ?Type ThelpContext= -MaxLongint..MaxLongint; ?Property HelpContext:ThelpContext; HelpContext是ThelpContext类的一个实例,它提供了与异常对象联系在一起的上下文相关帮助信息的序列号。该序列号决定当发生异常时用户按F1键显

示的一个异常错误的帮助信息。 (2)Exception.Message属性 该属性的定义如下: property Message: string 该属性存储异常发生时的错误信息。可以通过该属性在提示错误对话框中显示错误信息字符串。 2.exception方法 (1)Exception.Create方法 该方法的定义形式为: Constructor Create(Const Msg: String); 该方法用来产生一个带有一条简单提示信息的对话框,对话框中的提示内容由Msg提供 (2)Exception.CreateFmt方法 该方法的定义格式如下: Constructor CreateFmt(Const Msg:String;Const Args:Array of Const) ; 该方法用来产生一个带有格式化字符串提示信息的对话框,格式化的字符串由Msg和Args数组共同提供,其中数组Args负责提供用于格式化的数值。 (3)Exception.CreatHelp方法 该方法的定义格式如下: Constructor CreateHelp(Const Msg:String; AhelpContsxt:Integer) ; 该方法产生一个带有一条简单提示信息和上下文帮助序列号的提示对话框。其中Msg参数包含了显示在异常对话框中的运行错误信息。AhelpContext参数包

实验四 异常处理

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.掌握异常的基本概念。 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.docsj.com/doc/6f11127928.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基础第6章异常处理机制_练习题

第6章异常处理机制 一、选择题 1.下列关于异常的说法正确的是(B)。 A.异常是编译时的错误 B.异常是运行时出现的错误 C.异常就是程序错误,程序错误就是异常 D.以上都不对 2.下列哪个类是异常类的父类(根类)(A)。 A.Exception B.ArithmeticException C.NullPointerException D.ArrayIndexOutofBoundException 3.有关下列异常处理机制叙述正确的是(C)。 try{ 可能产生异常的语句块; }catch(exceptiontype1 e){ 处理异常e的语句块; }catch(exceptiontype2 e){ 处理异常e的语句块; } …… finally{ 最终处理语句块; } A.try子句可能有多个,catch子句可能有多个,finally子句必须有。 B.多个catch参数中的异常类可以有父子关系,但父类异常的catch子句应该在子类异常的catch子句前面。 C.如果try子句没有抛出任何异常,则跳过catch子句,转移到finally子句继续执行。 D.当try子句监视的语句块抛出异常时,运行时系统会根据catch子句的顺序,从第一个开始,逐个查找能够捕获该异常的catch子句并执行catch子句内的语句块以完成对异常的处理,然后继续执行后面的catch子句,最后转移到finally子句,执行该子句中的语句块。4.有关throw和throws的说法中不正确的是(C)。 A.throw的作用是抛出异常,后面加的是异常类的对象。 B.throws的作用是向外抛出异常即声明要产生的若干异常,后面加的是异常类的类名。 C.throws只能声明要产生的自定义异常,也就是后面只能加自定义异常类。 D.以上都不对。 5.下列程序运行结果是(C)。 public class E { public static void main(String argv[]){ E m = new E(); System.out.println(m.amethod()); } public int amethod(){

第五章 控制器

第五章控制器 第一节基本概念 一、CPU的基本功能 CPU具有以下4个方面的基本功能: (1)指令控制,即对程序运行的控制; (2)操作控制,即对指令内操作步骤的控制; (3)数据运算,即对数据进行算术运算和逻辑运算,这是CPU的最基本功能; (4)异常处理和中断处理,如处理运算中的溢出等错误情况以及处理外部设备的服务请求等。 历年真题 1.CPU由哪两部分组成?CPU具有哪四个基本功能?(2009年) 【答案】CPU由运算器和控制器组成。 (CPU)具有以下4个方面的基本功能: (1)指令控制,即对程序运行的控制; (2)操作控制,即对指令内操作步骤的控制; (3)数据运算,即对数据进行算术运算和逻辑运算,这是CPU的最基本功能; (4)异常处理和中断处理,如处理运算中的溢出等错误情况以及处理外部设备的服务请求等。 二、CPU的基本组成 CPU主要由主要运算器、控制器两部分组成。在CPU中还有多种寄存器。 CPU主要的寄存器: (1)指令寄存器(IR),存放当前正在执行的指令,为指令译码器提供指令信息。 (2)程序计数器(PC),存放下一条指令的地址。用来提供取指地址,从而控制程序执行顺序。 (3)数据寄存器(DR),存放操作数、运算结果和运算的中间结果,以减少访存的次数。 (4)地址寄存器(AR),存放操作数的地址。 (5)程序状态寄存器(PS),存放计算中的状态信息,这些信息是控制程序的条件。 历年真题 1.在CPU中,哪些寄存器属于控制用的指令部件?它们各起什么作用?(5分)(2000年)【答案】 ①指令寄存器(IR),存放当前正在执行的指令,为指令译码器提供指令信息。 ②程序计数器(PC),存放下一条指令的地址。用来提供取指地址,从而控制程序执行顺序。 ③程序状态寄存器(PS),存放计算中的状态信息,这些信息是控制程序的条件。 2.当读取并执行一条指令时,控制器的主要功能是什么? (2003年) 【答案】 ①从主存取指令,并计算下一条指令在主存中的地址; ②对指令进行译码,产生相应的操作控制信号; ③控制指令执行的步骤和数据流动的方向。 三、单总线CPU结构图(会画并理解)

java考试题库第六章.docx

第六章异常和异常处理 一选择题 6?1 .下列关于异常的描述中,错误的是(B) A.异常是一种经过修正后程序仍可执行的错误 B.异常是一种程序在运行中出现的不可恢复执行的错误 C.不仅Java语言有异常处理,C++语言也有异常处理 D.岀现异常不是简单结束程序,而是执行某种处理异常的代码,设法恢复程序的执行 6?2.下列关于异常处理的描述中,错误的是(D) A.程序运行时异常由Java虚拟机自动进行处理 B.使用try-catch-finally语句捕获异常 C.使用throw语句抛出异常 D.捕获到的异常只能用当前方法中处理,不能用其他方法中处理 6?3.下列关于try-catch-finally语句的描述中,错误的是(A) A?try语句后面的程序段将给出处理异常的语句 B?catch ()方法跟在try语句后面,它可以是一个或多个 C. catch ()方法有一个参数,该参数是某种异常类的对彖 D?finally语句后面的程序段总是被执行的,该语句起到提供统一接口的作用 6?4.下列关于抛出异常的描述中,错误的是(D) A.捕捉到发牛的异常可在当前方法中处理,也可以抛到调用该方法的方法中处理 B.在说明要抛出异常的方法吋应加关键字throw<异常列表〉 C.v异常列表〉中可以有多个用逗号分隔的异常 D.抛岀异常的方法中要使用下述抛出异常语句:throw<异常名〉;其中,v异常名>是异常类的类名6?5.下列关于用户创建自己的异常描述中,错误的是(D) A.创建自己的异常应先创建一个异常类 B.为实现抛出异常,须在可能抛出异常的方法中书写throw语句 C.捕捉异常的方法是使用try-catch-finally语句格式 D.使用异常处理不会使整个系统更加安全和稳定 二判断题 6?1 .异常是一种特殊的运行错误的对象。(对) 62异常处理可以使整个系统更加安全和稳定。(对) 6?3.异常处理是在编译时进行的。(错) 6-4.Java语言中异常类都是https://www.docsj.com/doc/6f11127928.html,ng.Throwable的子类。(对) 6-5.Throwable类有两个子类:Enor类和Exception类。前者由系统保留,后者供应用程序使用。(对)6?6.异常通常是指Error类和Exception类。(错) 6-7.Exception 类只有一个子类为RuntimeException o(错) 68在异常处理屮,出现异常和抛出异常是一回事。(错) 6?9.运行时异常是在运行时系统检测并处理的。(错) 6-10.使用try-catch-finally语句只能捕获一个异常。(错) 6?11 ?捕获异常时try语句后面通常跟有一个或多个catch ()方法用来处理try块内牛成的异常事件。(对)6?12?使用finally语句的程序代码为该程序提供一个统一的的出口。(对) 6?13.抛出异常的方法说明中要加关键字throws,并在该方法屮还应添加throw语句。(对) 6?14.创建异常类时要给出该异常类的父类。(对) 6J5.如果异常类没有被捕获将会产生不正常的终止。(对) 三分析程序的输出结果 6?1. Exer6_l.java public class Exer6_l

第五章Java语言异常处理-实验题目

第五章Java语言异常处理--实验题目 一、实验目的 1. 掌握Java的异常处理机制。 2. 掌握try、catch、throws和finally这5个关键字的用法。 3. 掌握成员的几个异常类。 4. 掌握自定义异常的使用。 二、实验内容 1.编写程序,从键盘上输入两个数。将第一个数除以第二个数并显示结果;处理所有可能的异常。 2.写出下面程序运行的结果: 3.写出下列程序的输出结果。

4.有下列程序: 若用下面方式执行该程序,则baz的值为( )。 java Test Red Green Blue (A)“”(B)null (C)"Red”(D)”BIue”(E)”Green”(F)代码不能编译(G)程序抛出异常5.有下列程序: 该程序的输出结果为( )。 (A)没有任何输出(B)输出“Finally”(C)编译错误(D)抛出异常 6.有下列程序:

该程序的输出结果为( )。 (A)没有任何输出(B)输出“Finally”(C)编译错误(D)抛出异常7.修改下列程序的错误之处。 8.写出下列程序的运行结果。

9.编写一个程序,要求从键盘输入一个double型的圆的半径,计算并精出其面积。 测试当输入的数据不是double型数据(如字符串“abc”)会产生什么结果,怎样处理。10.编写一个应用程序,在main()方法中使用try块抛出一个Exception类的对象,为Exception的构造方法提供一个字符串参数,在catch块内捕获该异常并打印出字符串参数。添加一个finally块并打印一条消息。 11.创建一个自定义的异常类,该类继承Exception类,为该类写一个构造方法,该构造方法带一个String类型的参数。写一个方法.令其打印出保存下来的String对泉。再编写一个类,在main()方法中使用try--catch结构创建一个MyException类的对象并抛出,在catch块中捕获该异常井打印出传递的String消息。

实验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.docsj.com/doc/6f11127928.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()); } } }

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 {

实验八 异常处理

实验八异常处理 【开发语言及实现平台或实验环境】 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)抛出异常

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程序设计大学教程实验 【开发语言及实现平台或实验环境】 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语句");

实验10--java异常(答案)

实验六Java异常处理 【实验目的】 1)掌握Java异常的概念及工作机制 2)掌握异常的分类 3)掌握抛出异常语句的使用(throw) 4)掌握抛出捕获处理异常语句的使用(try…catch…finally) 5)掌握上抛异常语句的使用(throws) 6)掌握创建自定义异常 【实验环境】 JDK1.6+Eclpise3.2 【实验准备】 1)复习课件中理论知识 2)练习课堂所讲的例子 【实验内容】 1、编写一个应用程序,要求从键盘输入一个double型的圆的半径,计算并输出其面积。测试当输入的数据不是double型数据(如字符串“abc”)会产生什么结果,怎样处理。 package SIX; import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; public class CIRCLE { public static void main(String[] args) throws IOException { System.out.print("请输入半径: "); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); try{ System.out.println("圆的面积为: "+computerArea(Double.parseDouble(br.readLine()))); } catch(NumberFormatException e){ System.out.println("您输入的不是数值,请重新输入"); } } public static double computerArea(double r)

第六章错账更正练习题

第六章错账更正练习题 某企业将账簿记录与记账凭证进行核对时,发现下列经济业务的凭证内容或账簿记录有误:(1)开出现金支票180元,支付企业行政管理部门的日常零星开支。原编制记账凭证的会计分录为: 借:管理费用180 贷:库存现金180 (2)结算本月应付职工工资,其中生产工人工资18000元,车间管理人员工资2000元,企业行政部门工资为4300元。原编制记账凭证的会计分录为: 借:生产成本18000 制造费用2000 管理费用4300 贷:应付职工薪酬24300 该记账凭证在登记总账时,其“管理费用”科目借方所记金额为3400元。 (3)以银行存款支付广告费100000元。原编制记账凭证的会计分录为: 借:销售费用10000 贷:银行存款10000 (4)车间管理人员出差回来报销差旅费2100元,原预支2200元,交回100元。原编制记账凭证的会计分录为: 借:管理费用2100 库存现金100 贷:其他应收款2200 (5)结转本月实际完工产品的生产成本共计5400元。原编制记账凭证的会计分录为:借:库存商品4500 贷:生产成本4500 (6)收到购货单位偿还上月所欠货款8700元存入银行。原编制记账凭证的会计分录为:借:银行存款8700 贷:应付账款8700 (7)结转本期主营业务成本30000元。原编制记账凭证的会计分录如下: 借:主营业务成本300000 贷:本年利润300000 (8)出售原材料1000元,增值税税率17%,货款已收到,存入银行。 借:银行存款1170 贷:主营业务收入1000 应交税费——应交增值税(销项税额)170 要求:上列各项经济业务账簿处理错误,分别采用适当的更正错账方法,予以更正。

实验1.7-JAVA实战练习-Banking项目step7-异常处理

实验题目7:(在6基础上修改) 将建立一个OverdraftException 异常,它由Account 类的withdraw()方法抛出。 实验目的: 自定义异常 实验说明: 创建OverdraftException 类 1.在banking.domain 包中建立一个共有类OverdraftException. 这个类扩展Exception 类。2.添加一个double 类型的私有属性deficit.增加一个共有访问方法getDeficit 3.添加一个有两个参数的共有构造器。deficit 参数初始化deficit 属性修改Account 类 4.重写withdraw 方法使它不返回值(即void).声明方法抛出overdraftException 异常 5.修改代码抛出新异常,指明“资金不足”以及不足数额(当前余额扣除请求的数额)修改CheckingAccount 类 6.重写withdraw 方法使它不返回值(即void).声明方法抛出overdraftException 异常 7.修改代码使其在需要时抛出异常。两种情况要处理:第一是存在没有透支保护的赤字,对这个异常使用“no overdraft protection”信息。第二是overdraftProtection 数额不足以弥补赤字:对这个异常可使用”Insufficient funds for overdraft protection” 信息 编译并运行TestBanking 程序 Customer [simms,Jane]has a checking balance of 200.0 with a 500.0 overdraft protection Checking Acct[Jane Simms]: withdraw 150.00 Checking Acct[Jane Simms]: deposit 22.50 Checking Acct[Jane Simms]: withdraw 147.62 Checking Acct[Jane Simms]: withdraw 470.00 Exception: Insufficient funds for overdraft protection Deifcit:470.0 Customer [Simms,Jane]has a checking balance of 0.0 Customer [Bryant,Owen]has a checking balance of 200.0 Checking Acct[Bryant,Owen]: withdraw 100.00 Checking Acct[Bryant,Owen]: deposit25.00 Checking Acct[Bryant,Owen]: withdraw 175.00 Exception: no overdraft protection Deficit:50.0 Customer [Bryant,Owen]has a checking balance of 125.0

相关文档