异常捕获习题

11.1、填空题
1、 Throwable下有那两个子类: Error 、 Exception 。
2、 ArthmeticException类表示 算术 异常,ArraysIndexOutOfBoundsException表示 数组越界 异常。
3、 一个try代码后面必须跟着若干个 catch 代码段或者一个 finally 代码段。
4、 如果一个方法使用了 throws ,则编译器会强制在使用此方法时进行异常的处理。
5、 异常处理中使用 finally 作为异常的统一出口。
11.2、选择题
1、 使用那个关键字可以在程序中手工抛出异常 B 。
A、 throws B、 throw C、 assert D、 class
2、 下面 A 关键字可以用在方法的声明处?
A、 throws B、 assert C、 class D、 interface
3、 为了捕获一个异常,代码必须放在下面 A 语句块中。
A、 try块 B、 catch块 C、 throws块 D、 finally块
4、 下面关于try块的说法正确的是 C 。
A、 try块后至少应有一个catch块 B、 try块后必须有finally块
C、 可能抛出异常的方法应放在try块中 D、 对抛出的异常的处理应放在try块中
5、 finally块中的代码将 A 。
A、 总是被执行
B、 如果try块后面没有catch块时,finally块中的代码才会执行
C、 异常发生时才被执行
D、 异常没有发生时才执行
6、 一个异常将终止 A 。
A、 整个程序 B、 只终止抛出异常的方法
C、 产生异常的try块 D、 上面的说法都不对
7、 所有异常的共同父类是 B 。
A、 Error B、 Exception C、 Throwable D、 RuntimeException
11.3、判断题
1、 一个try语句后有多个catch时,捕获范围大的异常要放在捕获范围小的异常之后。 ( √ )
2、 finally语句可以根据需要有选择的添加。 ( √ )

11.4、简答题
1、 简述RuntimeException和Exception的区别。
答: 异常(Exception)表示程序运行过程中可能出现的非正常状态,运行时异常(RuntimeException)表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常,即:Exception定义了必须处理的异常,而RuntimeException定义的异常可以选择性的进行处理。
RuntimeException是Exception的子类;
2、 try、catch、finally三种语句的功能是什么?
答: try语句负责捕获程序之中产生的异常;
catch负责匹配异常类型,并且对指定的异常进行处理;
finally作为异常处理的统一出口,不管是否发生异常,都会执行本程序。
3、 简述Java中的异常处理机制。
答: (1)、如果程序之中产生了异常,那么会自动的由JVM根据异常的类型,实例化一个指定异常类的对象;
(2)、如果这个时候程序之中没有任何的异常处理操作,则这个异常类的实例化对象将交给JVM进行处理,而JVM的默认处理方式就是进行异常信息的输出,而后中断程序执行;
(3)、如果程序之中存在了异常处理,则会由try语句捕获产生的异常类对象;
(4)、与try之后的每一个catch进行匹配,如果匹配成功,则使用指定的catch进行处理,如果没有匹配成功,则向后面的catch继续匹配,如果没有任何的catch匹配成功,则这个时候将交给JVM执行默认处理;
(5)、不管是否有异常都会执行finally程序,如果此时没有异常,执行完finally,则会继续执行程序之中的其他代码,如果此时有异常没有能够处理(没有一个catch可以满足),那么也会执行finally,但是执行完finally之后,将默认交给JVM进行异常的信息输出,并且程序中断;
4、 简述Error和Exception的区别。
答: Error:指的是JVM错误,这个时候的程序并没有执行,无法处理;
Exception:指的是程序之中出现的错误信息,可以进行异常处理,主要关心Exception。
5、 列举三个常见的RuntimeException子类。
答: NumberFormatException、ClassCastException、NullPointerException

11.5、编程题
1、 编写应用程序,从命令行输入两个小数参数,求它们的商。要求程序中捕获NumberFormatException异常和ArithmeticException异常。
class MyMath {
public int div(String x, String y) throws NumberFormatException,
ArithmeticException { // 出现异常要交给被调用处出
int result = 0;
try {
int numa = Integer.parseInt(x) ;
int numb = Integer.parseInt(y) ;
result = numa / numb; // 除法计算
} catch (Exception e) {
throw e; // 向上抛
}
return result;
}
}
public class TestDemo {
public static void main(String args[]) {
if (args.length != 2) {
System.out.println(“程序运行出错!”);
System.exit(1) ; // 程序退出
}
try {
MyMath mm = new MyMath() ;
System.out.println(mm.div(args[0], args[1])); // 被调用处处理异常
} catch (Exception e) {
e.printStackTrace();
}
}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值