Day13实验

Day13## 实验题

异常处理练习题

一、选择题

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

A、try   B、catch   C、throw 
D、finally

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

A、Throwable     B、Error   C、Exception  
D、AWTError

3.下列程序的执行,说法正确的是 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行的异常信息//没有进行赋值所以长度为零

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

class TrowsDemo

{

static void procedure() throws
IllegalAccessExcepton

{

System.out.println(“inside
procedure”);

throw_new___IllegalAccessException(“demo”);

}

public static void main(String args[])

{

try

{

procedure();

}

Catch(IllegalAccessExcepton  e)___

{

System.out.println(“捕获:”+e);

}

}

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

A、父类在先,子类在后

B、子类在先,父类在后

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

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

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

A、try子句          B、catch子句

C、finally子句        D、throw子句

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

A、捕获异常          B、抛出异常

C、声明异常          D、嵌套异常

8.哪个关键字可以抛出异常? C

A、transient   B、 finally   C、 throw   D、 static

二、填空题

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

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

3、java语言认为那些可预料和不可预料的出错称为__异常_______

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

5、Throwable类有两个子类:__Error_____类和Exception类。

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

三、判断题

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

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

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

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

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

四、编程题

1、
自己动手编写一个数组越界的异常。

编译时不会产生错误,运行时出现错误信息:

class ExMulti

{

static void procedure()

{

try{

int c[]={1};

c[42]=99;

}

catch(ArrayIndexOutOfBoundsException e){

System.out.println(“数组超越界限异常:”+e);

}

}

}

2、
在练习1的基础上,修改代码,实现如果抛出异常,就输出index out of bound!

注意:不写catch而直接写finally也能实现。

class ExMulti

{

static void procedure()

{

try{

int c[]={1};

c[42]=99;

}

catch(ArrayIndexOutOfBoundsException e){

System.out.println(“index out of bound!”+e);

}

}

}

3、
在练习2的基础上,在catch语句里实现输出异常信息。

蓝色部分均可以实现。

4、
编写代码,做运算a/b,再执行a/b前首先判断b是不是等于零。如果b等于零,抛出数学异常。

5、
编写代码,再main()方法中调用类CCircle中的方法,计算圆的面积。并且自己定义一个异常类,如果半径为负值,抛出自己定义的异常。(在类CCircle中判断并抛出异常)

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

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

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

9、
编写如下异常类:

空异常,年龄低异常,年龄高异常,工资低异常,工资高异常,身份证非法异常(自定义异常)。

编写一个员工类,

(1) 有属性:

编号,姓名,年龄,工资,身份证号码,员工人数,员工工资总额

(2) 有构造器:

构造器1:设置编号,年龄,姓名;如果年龄小于18,抛出年龄低异常;如果年龄大于60抛出年龄高异常,如果姓名为null或为空字符串,抛出空异常。

构造器2:设置工资,设置身份证号码;如果工资低于600,抛出工资低异常。

(3) 有方法

增加工资 addSalary(double addSalary),抛出工资高异常,当增加后的工资大于员工工资总额时,抛出此异常。

减少工资 minusSalary(double
minusSalary), 抛出工资低异常,当减少后的工资低于政府最低工资时,抛出工资低异常。

显示员工工资总额方法:showTotalSalary(), 抛出空异常,当工资总额为0时,抛出此异常。

显示员工人数:void showTotalEmployee(),抛出空异常。当员工人数为0时,抛出此异常。

编写Main主测试类:Test

分别生成3个员工,测试构造方法的异常抛出。

每个员工分别增加,减少工资,测试方法的异常。

显示员工的人数和工资总额。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值