异常处理练习题

异常处理练习题
异常处理练习题

异常处理练习题

一、选择题

中用来抛出异常的关键字是

A、try

B、catch

C、throw

D、finally

2.关于异常,下列说法正确的是

A、异常是一种对象

B、一旦程序运行,异常将被创建

C、为了保证程序运行速度,要尽量避免异常控制

D、以上说法都不对

3.()类是所有异常类的父类。

A、Throwable

B、Error

C、Exception

D、AWTError 语言中,下列哪一子句是异常处理的出口

A、try{…}子句

B、catch{…}子句

C、finally{…}子句

D、以上说法都不对

5.下列程序的执行,说法正确的是

public class MultiCatch

{

public static void main(String args[])

{

try

{

int a=;

int b=42/a;

int c[]={1};

c[42]=99;

}

catch(ArithmeticException e)

{

除0异常:”+e);

}

catch(ArrayIndexOutOfBoundsException e)

{

数组超越边界异常:”+e);

}

}

}

A、程序将输出第15行的异常信息

B、程序第10行出错

C、程序将输出“b=42”

D、程序将输出第15和19行的异常信息

6.下列程序的执行,说法正确的是

class ExMulti

{

static void procedure()

{

try

{

int c[]={1};

c[42]=99;

}

catch(ArrayIndexOutOfBoundsException e)

{

数组超越界限异常:”+e);

}

}

public static void main(String args[])

{

try

{

procedure();

int a=;

int b=42/a;

}

catch(ArithmeticException e)

{

除0异常:”+e);

}

}

}

A、程序只输出第12行的异常信息

B、程序只输出第26行的异常信息

C、程序将不输出异常信息

D、程序将输出第12行和第26行的异常信息

7.下面程序抛出了一个“异常”并捕捉它。请在横线处填入适当内容完成程序。class TrowsDemo

{

static void procedure() throws IllegalAccessException

{

procedure”);

throw____new___IllegalAccessException(“demo”);

}

public static void main(String args[])

{

try

{

procedure();

}

___catch (IllegalAccessException e)________

{

捕获:”+e);

}

}

8.对于catch子句的排列,下列哪种是正确的( )

A、父类在先,子类在后

B、子类在先,父类在后

C、有继承关系的异常不能在同一个try程序段内

D、先有子类,其他如何排列都无关

9.在异常处理中,如释放资源、关闭文件、关闭数据库等由( )来完成。

A、try子句

B、catch子句

C、finally子句

D、throw子句

10.当方法遇到异常又不知如何处理时,下列哪种说法是正确的( )

A、捕获异常

B、抛出异常

C、声明异常

D、嵌套异常

11.哪个关键字可以抛出异常

A、transient

B、finally

C、throw

D、static

12.一个异常将终止( )

A、整个程序

B、只终止抛出异常的方法

C、产生异常的try块

D、×上面的说法都不对

二、填空题

1、catch子句都带一个参数,该参数是某个异常的类及其变量名,catch用该参数去与__异常____对象的类进行匹配。

2、java虚拟机能自动处理_____RuntimeException_______异常。

3、变量属性是描述变量的作用域,按作用域分类,变量有局部变量、类变量、方法参数和____对象变量_____

4、捕获异常要求在程序的方法中预先声明,在调用方法时用try-catch-__finally____语句捕获并处理。

5、java语言认为那些可预料和不可预料的出错称为____Throwable___

6、按异常处理不同可以分为运行异常、捕获异常、声明异常和__自定义异常____几种。

7、抛出异常的程序代码可以是____java应有程序______或者是JDK中的某个类,还可以是JVM.

8、抛出异常、生成异常对象都可以通过__throws句实现。

9、捕获异常的统一出口通过___finally____语句实现。

10、java语言的类库中提供了一个__Throwable___类,所有的异常都必须是它的实例或它子类的实例。

11、Throwable类有两个子类:_____Error_____类和Exception类。

12、对程序语言而言,一般有编译错误和____运行_____错误两类。

13、下面程序定义了一个字符串数组,并打印输出,捕获数组超越界限异常。请在横线处填入适当的内容完成程序。

public class HelloWorld

{

int i=0;

String greetings[]= {

“Hello world!”,

“No,I mean it!”,

“HELLO WORLD!!”

};

while(i<4)

{

___try______

{

e)

{

Index Value”);

i=-1;}

finally

{

is always printed”);

}

i++;

}

}

三、判断题

1. ( n ) 程序中抛出异常时(throw …),只能抛出自己定义的异常对象。

2. ( y ) 一个异常处理中finally语句块只能有一个或者可以没有。

3.( y)异常类对象代表当前出现的一个具体异常。

4.( y )java语言中的所有异常类都是的子类。

5.( n ) 如果异常发生时,没有捕获异常的代码,程序会正常执行。

四、编程题

1.参考下面的程序,试修改程序,捕获相关异常,使得程序能正常运行。[提示:用错误数据测试,即可得到异常类名,运行时主方法参数输入abc 测试]

public class StringIndexOutOf

{

public static void main(String args[])

{

"字符串索引越界异常");

String str=args[0]; 第四个字符为”+(3));

int aa=(args[0]); 平方为”+aa*aa);

}

}

2.从命令行得到5个整数,放入一整型数组,然后打印输出,要求:如果输入数据不为整数,要捕获()产生的异常,显示“请输入整数”,捕获输入参数不足5个的异常(数组越界),显示“请输入至少5个整数”。

3.写一个方法void sanjiao(int a,int b,int c),判断三个参数是否能构成一个三角形,如果不能则抛出异常IllegalArgumentException,显示异常信息a,b,c+”不能构成三角形”,如果可以构成则显示三角形三个边长,在主方法中得到命令行输入的三个整数,调用此方法,并捕获异常。

4.自定义类Sanj,其中有成员x,y,z,作为三边长,构造方法Sanj(a,b,c)分别给x,y,z赋值,方法求面积getArea和显示三角形信息(三个边长)showInfo,这2个方法中当三条边不能构成一个三角形时要抛出自定义异常NotSanjiaoException,否则显示正确信息。在另外一个类中的主方法中构造一个Sanj对象(三边为命令行输入的三个整数),显示三角形信息和面积,要求捕获异常。

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

第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.360docs.net/doc/052264347.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(){

第7章 VB NET异常处理

【例7-l】使用On Error语句产生Err对象,通过测试Err对象,显示一个“过程调用或参数无效”错误对话框,结果如图8-4所示。 操作步骤: (1)界面设计: 创建一个Windows应用程序,在窗体上创建一个按钮控件,修改其Text属性为“生成错误”。 (2)双击按钮控件进入代码设计窗口,对其Click事件编写代码如下: 图8-4 错误测试对话框 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Msg As String On Error Resume Next Err.Clear() Err.Raise(5) If Err.Number <> 0 Then Msg = "错误#" & Str(Err.Number) & "发生原因是:" & Err.Source & vbCrLf & Err.DescriptionMsgBox(Msg, https://www.360docs.net/doc/052264347.html,rmation, "Error") End If End Sub 提示: 这里的vbCrLf为系统内置常量,表示回车换行。 (3)保存项目,运行应用程序,单击窗体中的“生成错误”按钮,得到如图8-4所示的消息框。 【例7-2】使用非结构化异常处理方法处理被0除错误。运行结果如图8-5所示的两个消息框。

图8-5 错误测试及处理结果对话框 操作步骤: 1.界面设计: 创建一个Windows应用程序,在窗体上创建一个按钮控件,修改其Text属性为“生成错误”。 2.双击按钮控件进入代码设计窗口,对其Click事件编写代码如下: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim x As Integer, y As Integer, z As Integer On Error GoTo DivideByZero '启用错误捕捉 x = 5 y = 0 z = x / y On Error GoTo 0 MsgBox(x & "/" & y & "=" & z, https://www.360docs.net/doc/052264347.html,rmation, "结果") Exit Sub DivideByZero: MsgBox("0不可以作除数!", MsgBoxStyle.Exclamation, "错误") y = 2 Resume '返回发生错误的语句z = x / y End Sub 3.保存项目,运行应用程序,单击窗体中的“生成错误”按钮,得到如图8-5所示的两个对话框。 提示: 这里的DivideByZero是行标签,行标签定义时由冒号结束。 【例7-3】使用Try…Catch…Finally结构,处理被0除错误。运行结果为如图8-6所示的两个消息框。 (a)(b) 图8-6处理被0除错误,之后退出 操作步骤: 1.界面设计: 创建一个Windows应用程序,在窗体上创建一个按钮控件,修改其Text属性为“生成错误”。

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.360docs.net/doc/052264347.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

C语言程序编辑或调试中常见的错误

常见错误和程序分析 (1)忘记定义变量。例如: void main() { x=3; y=6; printf(“%d\n”,x+y); } C要求对程序中用到的美一个变量都必须定义其类型,上面程序中没有对x,y 进行定义。应在函数体的开头加int x,y; (2)输入输出的数据类型与所用格式说明符不一致。例如,若a已定义为整数,b已定义为实型: a=3;b=4.5; /*对a和b赋值*/ printf(“%f %d\n”,a,b); 编译时不给出出错信息,但运行结果将与原意不符,输出为0.000000 16402它们并不是按照赋值的规则进行转换(如把4.5转换为4),而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后2个字节中的数据按%d作为整数输出)。 (3)未注意int型的数据的数值范围。Turbo C等编译系统,对一个整型数据分配2个字节。因此一个整数的范围为-2的13次方到2的15次方减1,即-32768~32767常见这样的程序段: int num; num=89101; printf(“%d”,num); 得到的却是23565,原因是89101已超过32767。2个字节容纳不下89101,则将高位截去,即将超过低16位的数截去,也即89101-65536=23565,有时还会出现负数。这种情况应改为: Long int num; num=89101; printf(“%ld”,num); 注意,如果只定义num为long型,而在输出时扔用%d说明符,也会出现以上错误。 (4)在输出语句scanf中忘记使用变量的地址符。例如: scanf(“%d%d”,a,b); 这是很多初学者刚学C语言时常见的疏忽,应写为scanf(“%d%d”,&a,&b); (5)输入数据的形式与要求不符。例如有以下scanf函数: scanf(“%d%d”,&a,&b); 有人输入 3 , 4 ,这是错的数据间应该用空格来分隔,读者可以用printf(“%d%d”,a,b);来验证下。应该输入 3 4,除非函数是scanf(“%d,%d”,&a,&b); 还应注意不能企图用

实验八 异常处理

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

第12章 异常处理 习题

第12章异常处理 一.单项选择题 1.程序中的错误可以分为以下三类,除了【】。 A) 逻辑错误B) 运行错误C) 自定义错误D) 语法错误2.程序运行期间发生的错误称为【】。 A) 版本B) 断点C) 异常D) 属性 3.在C#程序中,可以使用try…catch机制来处理程序出现的【】错误。 A) 语法B) 拼写C) 运行D) 逻辑 4.以下关于C#的异常处理的叙述中,正确的是【】。 A) 一个try块后面只能跟随一个catch块 B) 在try…catch…finally块中,当发生异常时只执行相应catch块中的语句,不会执行finally块 C) throw语句中必须指出抛出的异常 D) try块后面必须跟catch块或finally块组合使用,不能单独使用 5.以下关于try…catch…finall语句的叙述中,不正确的是【】。 A) catch块可以有多个B) finally块最多只能有一个 C) catch块和finally块都是可选的D) 可以只有try块,没有catch块和finally 块 6.一般情况下,异常类存放在【】中。 A) System.Exception命名空间B) System.Diagnostics命名空间 C) System命名空间D) Exception命名空间 7.分析下列程序代码: int num; try { num= Convert.ToInt32(Console.ReadLine());} Catch { //捕获异常} 当输入"abc"时,会抛出【】异常。 A) FormatException B) IndexOutOfRangException C) OverflowException D) TypeLoadException 8.用户定义的异常应该从【】类中继承。 A) ArgumentException B) IOException C) SystemException D) Exception 9..NET Framework中,处理异常是很有用的功能。一个try代码块可以有多个catch块与之对应。在多个catch块中,下面【】异常应该最后捕获。 A) Exception B) StackOverflowException C) SystemException D) FormatException 10.下列关于try…catch…finally语句的说明中,不正确的是【】。 A) catch块可以有多个B) finally块是可选的 C) catch块是可选的D) 可以只有try块 11.为了能够在程序中捕获所有异常,在catch语句的括号中使用的类名为【】。

实验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.360docs.net/doc/052264347.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.学会利用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的异常和参数输入有误异常。源代码如下:

第六章错账更正练习题

第六章错账更正练习题 某企业将账簿记录与记账凭证进行核对时,发现下列经济业务的凭证内容或账簿记录有误:(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.1.1JA V A异常处理的原则 (1)尽可能的处理异常 要尽可能的处理异常,如果条件确实不允许,无法在自己的代码中完成处理,就考虑声明异常。如果人为避免在代码中处理异常,仅作声明,则是一种错误和依赖的实践。 (2)具体问题具体解决 异常的部分优点在于能为不同类型的问题提供不同的处理操作。有效异常处理的关键是识别特定故障场景,并开发解决此场景的特定相应行为。为了充分利用异常处理能力,需要为特定类型的问题构建特定的处理器块。(3)记录可能影响应用程序运行的异常 至少要采取一些永久的方式,记录下可能影响应用程序操作的异常。理想情况下,当然是在第一时间解决引发异常的基本问题。不过,无论采用哪种处理操作,一般总应记录下潜在的关键问题。别看这个操作很简单,但它可以帮助您用很少的时间来跟踪应用程序中复杂问题的起因。 (4)根据情形将异常转化为业务上下文 若要通知一个应用程序特有的问题,有必要将应用程序转换为不同形式。 若用业务特定状态表示异常,则代码更易维护。从某种意义上讲,无论何时将异常传到不同上下文(即另一技术层),都应将异常转换为对新上下文有意义的形式。 1.1.2JA V A处理方法 1.1. 2.1 提示信息输出 ●异常类 信息输出统一采用PaMsg. abort方法输出 ●警告类 信息输出统一采用PaMsg. Warn方法输出

●成功类 信息输出统一采用PaMsg. success方法输出 1.1. 2.2 提示信息获取 ●获取JAVA程序信息 由于PaMsg对象的信息输出会抛出一个ApplicationObjectException, 所以捕获到该异常,就能截取异常代码及异常信息。 ●获取存储过程信息 对于JAVA调用存储过程这种情况,如果存储过程抛出了提示信息,JAVA 程序通过package中PA_MSGS.GET_MSG方法可以获取信息。 1.2日志管理 本系统的日志管理,采用Log4j。Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。 1.2.1文件日志 1.2.1.1 日志等级 日志等级分为DEBUG,INFO,ERROR三级,在System.properties中定义,可以随时关闭DEBUG日志。 1.2.1.2控制台输出 日志配置属性ISCONSOLE=TRUE,默认日志输出可以同时在控制台输出,方便开发模式,测试及生产模式下修改为FALSE,将不在控制台屏幕输出。

实验六异常处理

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

实验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"); } } }

C#高级编程.第14章错误和异常解析

第14章错误和异常 错误的出现并不总是编写应用程序的人的原因,有时应用程序会因为终端用户的操作 而发生错误。无论如何,我们都应预测应用程序和代码中出现的错误。 .NET Framework 改进了处理错误的方式。C#处理错误的机制可以为每种错误提供定制 的处理,并把识别错误的代码与处理错误的代码分离开来。 本章的主要内容如下: ●异常类 ●使用try-catch-finally 捕获异常 ●创建用户定义的异常 学习完本章后,您将很好地掌握C#应用程序中的高级异常处理技术。 14.1 错误和异常处理 无论编码技术有多好,程序都必须能处理可能出现的错误。例如,在一些复杂的处理 过程中,代码没有读取文件的许可,或者在发送网络请求时,网络可能会中断。在这种情况下,方法只返回相应的错误代码通常是不够的——可能方法调用嵌套了15 级或者20 级, 此时,代码需要跳过所有的15 或20 级方法调用,才能完全退出任务,采取相应的措施。C#语言提供了处理这种情形的绝佳工具,称为异常处理机制。 注意: 在VB6 中,错误处理工具的功能非常有限,主要是On Error GoTo 语句。如果您有VB6 的背景知识,就会发现C#异常打开了程序中处理错误的全新世界的大门。另一方面,Java 和C++开发人员会比较熟悉异常的规则,因为这些语言处理错误的方式与C#相同。C++开发人员会留意异常是因为C++可能会因此而降低性能,但在C#中就不是这样。在C#代码中使用异常一般不影响性能。VB 2005 开发人员会发现,在C#中处理异常非常类似于在VB 中使用异常(但语法不同)。 第Ⅰ部分C# 语言 14.1.1 异常类 在C#中,当出现某个异常错误条件时,就会创建一个异常对象。这个对象包含有助于

第7章异常处理与程序调试技术(精)

第7章异常处理与程序调试技术 第1节异常处理概述 一、异常的概念 所谓异常是指程序在运行时遇到的一些无法预知,需要特别处理的状况。例如程序要打开一个不存在的文件、网络连接中断、操作数越界、装载一个不存在的类等问题。 二、Delphi的异常处理机制 Delphi提供了一套默认的自动异常处理机制,即当程序发生错误后会自动退出当前运行的程序模块,并以对话框的形式给出相应的错误信息,但是并不会引起应用程序的非法终止。 Delphi的异常处理机制是建立在保护块的概念上的。保护块是用保留字try和end封装起来的一段代码。当应用程序发生错误时,系统会自动创建相应的异常类的对象,该异常对象通常包含了错误的相关信息。程序可以捕获并处理这个异常对象,如果程序中没有定义对该异常的处理,则系统会自动产生一个消息框来描述这个错误,并保证程序不会非法终止。 三、异常类 在Delphi中,所有的异常类都派生自Exception类,该类是在SysUtils单元中定义的,如果一个程序的Uses语句中包含了SysUtils单元,则运行中发生错误时就会引发一个异常。 需要注意的是,异常不同于错误,编程者可以引发一个自定义异常。例如: Raise Exception.Create('My Error'); 第2节异常处理的语法 Delphi提供了两种处理异常的基本结构:try…except和try…finally。前者主要用于编写异常处理代码,后者主要用于保护系统资源。 一、try…except…end try…except…end形成一个异常响应保护块。正常情况下except后面的语句并不会被执行,而当一条或多条try块中的语句执行失败时,则发生异常,程序自动跳到except块中,进入异常响应处理模块中去执行。当异常被响应后异常类自动清除。

相关文档
最新文档