异常处理练习题1

更新时间:2024-04-24 08:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

异常处理练习题

一、选择题

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

A、try B、catch C、throw D、finally 2.关于异常,下列说法正确的是??????

A、异常是一种对象

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

C、为了保证程序运行速度,要尽量避免异常控制 D、以上说法都不对

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

A、Throwable B、Error C、Exception D、AWTError 4.java语言中,下列哪一子句是异常处理的出口??????

A、try{?}子句 B、catch{?}子句 C、finally{?}子句 D、以上说法都不对 5.下列程序的执行,说法错误的是?????? public class Multi Catch{

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.下列程序的执行,说法正确的是 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_______IllegalAccessException(“demo”); }

public static void main(String args[]) { try {

procedure(); }

___________ {

System.out.println(“捕获:”+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用该参数去与____try___对象的类进行匹配。 2、java虚拟机能自动处理_______异常。???

3、变量属性是描述变量的作用域,按作用域分类,变量有局部变量、类变量、方法参数和______????/_

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

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

6、按异常处理不同可以分为运行异常、捕获异常、声明异常和______几种。

7、抛出异常的程序代码可以是________或者是JDK中的某个类,还可以是JVN.

8、抛出异常、生成异常对象都可以通过_________语句实现。 9、捕获异常的统一出口通过_________语句实现。

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

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

12、对程序语言而言,一般有编译错误和____________错误两类。 13、下面程序定义了一个字符串数组,并打印输出,捕获数组超越界限异常。请在横线处填入适当的内容完成程序。 public class HelloWorld

{

int i=0;

String greetings[]= { “Hello world!”, “No,I mean it!”,

“HELLO WORLD!!” };

while(i<4) {

___try_________ {

System.out.println(greeting[i]); }

_______catch__________(ArrayIndexOutOfBoundsException e) {

System.out.println(“Re-setting Index Value”); i=-1;} finally {

System.out.println(“This is always printed”); } i++; } }

三、判断题

1. ( ) 程序中抛出异常时(throw …),只能抛出自己定义的异常对象。 2. ( ) 一个异常处理中 finally语句块只能有一个或者可以没有。 3.( )异常类对象代表当前出现的一个具体异常。

4.( )java语言中的所有异常类都是java.lang.Throwable的子类。 5.( ) 如果异常发生时,没有捕获异常的代码,程序会正常执行。

四、编程题

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

public class StringIndexOutOf {

public static void main(String args[]) {

System.out.println(\字符串索引越界异常\

String str=args[0]; System.out.println(“第四个字符为 ”+str.charAt(3));

int aa=Integer.parseInt(args[0]); System.out.println(“平方为 ”+aa*aa); } }

2. 从命令行得到5个整数,放入一整型数组,然后打印输出,要求:如果输入数据不为整数,要捕获Integer.parseInt()产生的异常,显示“请输入整数”,捕获输入参数不足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对象(三边为命令行输入的三个整数),显示三角形信息和面积,要求捕获异常。

本文来源:https://www.bwwdw.com/article/e7rp.html

Top