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

实验六异常处理

实验六异常处理
实验六异常处理

实验六异常处理

云南大学信息学院面向对象技术导论 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语句");

}

}

}

问题:

⑴程序产生何异常?

⑵对于类型不匹配的异常,程序中采用什么方法处理的?

答:(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));

else

System.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));

else

System.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("参数不能小于零!");

}

}

实验结果:

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参数包

实验 异常处理

实验报告六 一【实验目的】 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/406076509.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(){

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/406076509.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

实验八 异常处理

实验八异常处理 【开发语言及实现平台或实验环境】 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.docsj.com/doc/406076509.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程序设计大学教程实验 【开发语言及实现平台或实验环境】 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语句");

第六章错账更正练习题

第六章错账更正练习题 某企业将账簿记录与记账凭证进行核对时,发现下列经济业务的凭证内容或账簿记录有误:(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 要求:上列各项经济业务账簿处理错误,分别采用适当的更正错账方法,予以更正。

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

实验室异常检验结果调查及处理程序 文件编码: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"); } } }

模板与异常处理

实验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) {

实验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

实验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)

JAVA实验报告5 异常处理实验

中南财经政法大学武汉学院实验报告 实验课名称:__JAVA语言____ 学生姓名:_______ 专业班级:__网络工程1104 学号:11071125__ 开课时间:___2013年2月26日_ 教务处制

《Java程序设计基础》实验报告 实验序号:05实验项目名称:异常处理 学号11071125姓名专业、班级 实验地点计-202指导教师时间2013-5-14一、实验目的及要求 了解异常处理机制; 了解异常的概念; 掌握抛出异常、捕获异常和异常处理的方法; 了解自定义异常类的定义和使用方法。 二、实验设备(环境)及要求 1、Windows-XP操作系统 2、Eclipse应用程序 三、实验内容与步骤 编写一个类ExceptionTest1,在main方法中使用try、catch、finally: ①在try块中,编写被0除的代码。 ②在catch块中,捕获被0除所产生的异常,并且打印异常信息。 ③在finally块中,打印一条语句。 四、实验结果与数据处理 import java.util.*; public class ExceptionTest1{ public static void main(String[]args){ Scanner in=new Scanner(System.in); try{ System.out.print("请输入被除数:"); double beichushu=in.nextDouble(); System.out.print("请输入除数:"); double chushu=in.nextDouble(); if(chushu==0) throw new ArithmeticException("请输入不为0的数字!"); double i=(beichushu/chushu); System.out.println("二者的商为:"+i);}catch(InputMismatchException e1){ System.out.println("请输入数字!");

相关文档