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

实验六 异常处理

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

实验六异常处理

云南大学信息学院面向对象技术导论 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实验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类:

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录入成绩()

JAVA异常实验报告

一. 实验目的及实验环境 实验目的:1.理解JA V A对异常的处理 2.掌握自定义异常的定义方式 实验环境:eclipse 4.4 二. 实验内容 1.假设Sum类中有一个addContinue(int n)方法,当n>0时,方法翻译1+2+…+n 的和;当n<0时,方法抛出一个受检查的ArgumentException异常。ArgumentException类应该提供一个能够接受并保存n值得构造方法,以及一个能返回n值得实例方法,现定义Sum类以及ArgumentException类,并编程测试它们。 三.方案设计 1.定义三个类Sum,ArgumentException,Test类 2.分别在类中实现加法,异常抛出和测试 四.测试数据及运行结果 1.正常测试数据(3组)及运行结果;

2.非正常测试数据(2组)及运行结果。 五.总结 1.实验过程中遇到的问题及解决办法; ①中没有明确表示需要进行异常抛出很有可能就会忘记这个题目存在的问题。所以平常程序设计时,应该多考虑不同的情况,防止程序出现不可逆的漏洞。 ②如果发生可识别的运行错误,系统应产生一个相应的异常类对象,并进一步寻找异常处理代码来处理它,确保程序能从故障中恢复,之程序能够运行下去,直

到结束。 2.对设计及调试过程的心得体会。 中断,影响程序正常运行的事件称为异常。异常处理是使程序从故障中恢复,他包括提示异常信息、不产生无效结果和释放资源三方面内容。其中,显示异常信息和不产生无效结果可通过try和catch块来实现,释放资源可通过finally块实现。 附代码 public class Add { public int addContinue(int i) throws ArgumentException{ int sum=0; if( i<0){ throw new ArgumentException(i); } for(int n=0;n<=i;n++){ sum=sum+n; } return sum; } } public class ArgumentException extends Exception { private int n; public ArgumentException(int n) { this.n = n; } public int getN(){ return n; } } public class test { public static void main(String[] args){ Add s = new Add(); try { System.out.println(s.addContinue(-1)); } catch (ArgumentException e) { System.out.println(e.getN()); } } }

《面向对象程序设计》第10章在线测试

《面向对象程序设计》第10章在线测试 A B C D 、关于异常对象的说法正确的是( A B 对象 C、以引用方式传递异常对象时,抛出的是局部静态对象 D 对象 A块相当于一个以类型为单一参数的函数 B 以捕捉 C块中可以声明变量,该变量可以在块外使用 D 数值 A B C D 、为保证程序中的全局变量不与开发商提供的全局变量重名,可以采取的措施是( A B C D

C、C++程序绝对不能出现错误 D、异常处理使C++程序在出现错误的情况下仍能继续运行 2、下面说法正确的是() A、C++程序中可以存在多个名字空间 B、不同的名字空间中不能出现名字相同的变量 C、名字空间能避免名字冲突 D、C++程序中也可以不定义名字空间 3、关于异常处理的说法正确的是() A、将异常的检测与处理分离 B、异常就是错误 C、异常由函数调用引起 D、在上层调用函数中使用try检测函数调用是否引发异常 4、下面与异常处理相关的关键字有() A、Throw B、throw C、try D、Try 5、下面的说法正确的是() A、引发异常用关键字throw B、在被调用函数中检测到异常条件用throw都可以引发异常 C、被调用函数只有在try块中用throw才可以引发异常 D、检测到的异常由catch捕获并处理 第三题、判断题(每题1分,5道题共5分) 1、抛出异常的模块并不负责异常的处理,该异常的处理可以程序中的任何位置。

正确错误、异常处理器根据抛出异常模块的报告来处理异常。 正确错误、异常信号传递方式有三种:传值方式、引用方式和指针方式。 正确错误表示函数将会抛出所有类型的异常 正确错误处理程序的出现次序无关紧要。 正确错误

第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异常处理例题代码教学文稿

j a v a异常处理例题代 码

App9_1.java:输出一个数组的所有元素,捕获数组下标越界异常和除娄为0异常。public class App9_1{ public static void main(String args[]){ int i; int[] a={1,2,3,4}; for(i=0;i<5;i++) System.out.println(" a["+i+"]="+a[i]); System.out.println("5/0"+(5/0)); } } App9_2.java:使用try-catch-finall语句对程序中的异常进行捕获与处理。 public class App9_2{ public static void main(String args[]){ int i; int a[]={1,2,3,4}; for (i=0;i<5;i++){ try{ System.out.print("a["+i+"]/"+i+"="+(a[i]/i)); } catch(ArrayIndexOutOfBoundsException e){ System.out.print("捕获到了数组下标越界异常"); } catch(ArithmeticException e){ System.out.print("异常类名称是:"+e); //显示异常信息 } catch(Exception e){ System.out.println("捕获"+e.getMessage()+"异常!"); //显示异常信息 } finally{ System.out.println(" finally i="+i); } } System.out.println("继续!!"); } } App9_3.java:使用throw语句在方法中抛出异常。 public class App9_3{ public static void main(String args[]){ int a=5,b=0; try{ if (b==0) throw new ArithmeticException(); //抛出异常,不是必须的 else System.out.println(a+"/"+b+"="+a/b); //若不抛出异常,则运行此行

实验 异常处理

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

材料科学基础第十章答案

材料科学基础第十章答案

第十章答案 10-1名词解释:烧结烧结温度泰曼温度液相烧结固相烧结初次再结晶晶粒长大二次再结晶 (1)烧结:粉末或压坯在低于主要组分熔点的温度下的热处理,目的在于通过颗粒间的冶金结合以提高其强度。 (2)烧结温度:坯体在高温作用下,发生一系列物理化学反应,最后显气孔率接近于零,达到致密程度最大值时,工艺上称此种状态为"烧结",达到烧结时相应的温度,称为"烧结温度"。 (3)泰曼温度:固体晶格开始明显流动的温度,一般在固体熔点(绝对温度)的2/3处的温度。在煅烧时,固体粒子在塔曼温度之前主要是离子或分子沿晶体表面迁移,在晶格内部空间扩散(容积扩散)和再结晶。而在塔曼温度以上,主要为烧结,结晶黏结长大。 (4)液相烧结:烧结温度高于被烧结体中熔点低的组分从而有液相出现的烧结。 (5)固相烧结:在固态状态下进行的烧结。 (6)初次再结晶:初次再结晶是在已发生塑性变形的基质中出现新生的无应变晶粒的成核和长大过程。 (7)晶粒长大:是指多晶体材料在高温保温过程中系统平均晶粒尺寸逐步上升的现象.

(8)二次再结晶:再结晶结束后正常长大被抑制而发生的少数晶粒异常长大的现象。 10-2烧结推动力是什么?它可凭哪些方式推动物质的迁移,各适用于何种烧结机理? 解:推动力有:(1)粉状物料的表面能与多晶烧结体的晶界能的差值, 烧结推动力与相变和化学反应的能量相比很小,因而不能自发进行,必须加热!! (2)颗粒堆积后,有很多细小气孔弯曲表面由于表面张力而产生压力差, (3)表面能与颗粒之间形成的毛细管力。 传质方式:(1)扩散(表面扩散、界面扩散、体积扩散);(2)蒸发与凝聚;(3)溶解与沉淀;(4)黏滞流动和塑性流动等,一般烧结过程中各不同阶段有不同的传质机理,即烧结过程中往往有几种传质机理在起作用。 10-3下列过程中,哪一个能使烧结体强度增大,而不产生坯体宏观上的收缩?试说明理由。(1)蒸发-冷凝;(2)体积扩散;(3)粘性流动;(4)晶界扩散;(5)表面扩散;(6)溶解-沉淀 解:蒸发-凝聚机理(凝聚速率=颈部体积增加)

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实验报告 继承、多态、接口和异常处理

实验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) { https://www.docsj.com/doc/6a4736919.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) { https://www.docsj.com/doc/6a4736919.html, = name; } public void setType(String type) { this.type = type; } public void setCourseScore(int courseNumber, int courseScore) { //按课程索引号设置课程成绩 this.courses[courseNumber] = courseScore ; } }

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/6a4736919.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

第十章(神经症)

第十章神经症与癔症 一、目的与要求 1.掌握神经症的概念及分类。 2.掌握各种神经症的临床特征、诊断及鉴别诊断。 3.掌握各种神经症的治疗。 4.掌握癔症的临床表现、诊断及鉴别诊断。 5.了解神经症的病因及发病机制。 6.了解神经症的流行病学资料。 7.了解神经症的病程和预后。 8.神经症是一种常见疾病。多数神经症患者首诊于综合科,而有些综合科医生对于此类疾病的识别和处理能力有限。因此,通过本章的学习,要求学生在今后的临床工作中能识别神经症,并能提出合理的治疗建议,以减少误诊和医疗资源的浪费。 二、各部分应掌握和了解的主要内容 第一节神经症的病因和发病机制 1.了解国内外神经症的流行病学特征,包括一些具体类型的流行病学特征。 2.了解神经症的病因。 3.了解神经症在国内外诊断分类系统中的大体变迁。 4.简要了解几种有代表性的神经症理论(精神分析的神经症理论、行为主义的神经症理论、认知心理学的神经症理论,人本主义心理学的神经症理论和森田的神经质理论)。 第二节神经症的临床表现 1.掌握神经症病人常出现的几大类症状群的特征,包括脑功能失调症状群,情绪改变症状群,强迫症状群,疑病症状群,躯体不适症状群及睡眠障碍症状群。 2.掌握神经症的共同特征,包括患者的生物-心理-社会学基础、症状范围

及其组合方式等等,认识到神经症是一组精神障碍的总称,尚未发现有器质性病变,患者有相当的自知力,社会功能相对完好。 第三节神经症的诊断与治疗 1.掌握神经症的诊断原则与鉴别诊断。 2.掌握神经症的治疗原则。 第四节神经症的常见类型 1.掌握焦虑症的临床表现:以广泛和持续性焦虑或反复发作的惊恐不安为主要特征,常伴有自主神经紊乱、肌肉紧张与运动性不安,临床上分为广泛性焦虑和惊恐障碍两种主要形式。掌握焦虑症的诊断、鉴别诊断及治疗方法。需要注意的是,焦虑症的焦虑症状是原发的。 2.掌握强迫症的临床表现:其特点是有意识的自我强迫与反强迫同时存在,二者的尖锐冲突使患者焦虑和痛苦;病程迁延的患者可表现为以仪式化动作为主,而精神痛苦减轻,但此时社会功能明显受损。掌握强迫症的诊断、鉴别诊断及治疗方法。应了解到慢性强迫症患者由于出现了对病态体验的适应行为方式,此时病人的求治要求可能会变得并不十分迫切。 3.掌握恐惧症的临床特点:对某种客观事物或情境产生异乎寻常的恐惧和紧张,自知这种反应是过分或不合理的,但难以控制,以致极力回避该事物或情境。掌握恐惧症的诊断、鉴别诊断及治疗方法。了解恐惧对象的通常分类。了解恐惧发作时可以伴有抑郁、强迫、人格解体等症状。 4.掌握躯体形式障碍的主要特征:病人反复陈述躯体症状,不断要求给予医学检查,无视反复检查的阴性结果,不相信医生的无躯体疾病的再三保证。掌握躯体形式障碍的诊断、鉴别诊断及治疗方法。了解躯体形式障碍的类型,其中疑病障碍(症)的诊断在我国应用较多。 5.掌握神经衰弱的主要特征:表现为脑功能失调症状、常伴有情绪症状及心理生理症状,其核心症状是精神疲劳。掌握神经衰弱的诊断、鉴别诊断及治疗方法。

JAVA异常处理实验报告

实验报告 实验名称:异常处理 学院:电子信息工程学院 班级:电信01班 姓名:鲁川 学号: 121040110113 日期: 2014.11.3 成绩:

一、实验名称:异常处理 二、实验目的: 1.掌握异常处理机制的运作 2.掌握处理异常的几个子句:try…catch..finally、thorws和throw 3.掌握字符串类的相关操作 三、实验内容: 1. 编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数 组元素,使其产生ArrayIndexOutOfBoundsException异常。在catch子句里捕获此异常对象,并且打印“数组越界”信息,加一个finally子句,打印一条信息以证明这里确实得到了执行。 2. 给定一个字符串,将字符串中的所有大写字母变成小写字母,数字用0来代替,其他符号用#代替。 四、实验代码 1.ExceptionDemo.java class ExceptionDemo { public static void main(String[] args) { int [] arr = new int[]{13,24,1,53,24}; try { int num = arr[5]; } catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组越界啦!!!"); } finally { System.out.println("此处代码一定会执行的--finally"); } } } 运行结果:

2.StringTest.java class StringTest { public static void main(String[] args) { String str = "DfS分手dsA吧25J奋45斗"; System.out.println("原字符串=="+str); StringBuffer sb = new StringBuffer(); for(int i = 0;i='A' && ch<='Z') { sb.append(Character.toLowerCase(ch)); } else if(ch>='a' && ch<='z') { sb.append(ch); }else if(ch>=49 && ch<=58) { sb.append(0); }else { sb.append("#"); }

实验八 异常处理

实验八异常处理 【开发语言及实现平台或实验环境】 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.java中用来抛出异常的关键字是 (C) A、try B、catch C、throw D、finally 2.关于异常,下列说法正确的是(A) A、异常是一种对象 B、一旦程序运行,异常将被创建 C、为了保证程序运行速度,要尽量避免异常控制 D、以上说法都丌对 3.(A)类是所有异常类的父类。 A、Throwable B、Error C、Exception D、AWTError 4.java语言中,下列哪一子句是异常处理的出口(C) A、try{…}子句 B、catch{…}子句 C、finally{…}子句 D、以上说法都丌对 5.下列程序的执行,说法错误的是 (C) public class MultiCatch { public static void main(String args[]) { try { int a=args.length; int b=42/a; int c[]={1}; c[42]=99; System.out.println(“b=”+b); } catch(ArithmeticException e) { System.out.println(“除0异常:”+e); } catch(ArrayIndexOutOfBoundsException e) { System.out.println(“数组超越边界异常:”+e); } } } A、程序将输出第15行的异常信息 B、程序第10行出错 C、程序将输出“b=42”

D、程序将输出第15和19行的异常信息 6.下列程序的执行,说法正确的是(D) class ExMulti { static void procedure() { try { int c[]={1}; c[42]=99; } catch(ArrayIndexOutOfBoundsException e) { System.out.println(“数组超越界限异常:”+e); } } public static void main(String args[]) { try { procedure(); int a=args.length; int b=42/a; System.out.println(“b=”+b); } catch(ArithmeticException e) { System.out.println(“除0异常:”+e); } } } A、程序只输出第12行的异常信息 B、程序只输出第26行的异常信息 C、程序将不输出异常信息 D、程序将输出第12行和第26行的异常信息 7.下面程序抛出了一个“异常”并捕捉它。请在横线处填入适当内容完成程序。class TrowsDemo { static void procedure() throws IllegalAccessExcepton { System.out.println(“inside procedure”); throw__new_____IllegalAccessException(“demo”);

实验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/6a4736919.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()); } } }

相关文档