Java习题4

单选题

(1)给定如下所示的JAVA代码,则运行String s = null; s.concat("abc");时会产生(B)。

A.ArithmeticException B.NullPointerException

C.IOException D.ClassNotFoundException

(2)下列哪种异常是检查型异常,需要在编写程序时声明(C)。

A.NullPointerException B.ClassCastException

C.FileNotFoundException D.IndexOutOfBoundsException

(3)对于已经被定义过可能抛出异常的语句,在编程时(A)。

A.必须使用try/catch语句处理异常,或用throws将其抛出

B.如果程序错误,必须使用try/catch语句处理异常

C.可以置之不理

D.只能使用try/catch语句处理

(4)下面代码运行结果是(B)。

public class Demo{

public int add(int a,int b){

try{

return a+b;

}catch(Exception e){

System.out.println(“catch 语句块”);

}finally{

System.out.println(“finally 语句块”);

}

return 0;

}

public static void main(String[] args){

Demo demo = new Demo();

System.out.println(“和是:”+demo.add(9,34));

}

}

A.编译异常 B.finally语句块 和是:43

C.和是:43 finally语句块 D.catch语句块 和是:43

(5)以下程序运行结果是(D)。

public class Test {

public int div(int a, int b) {

try{

return a / b;

}catch(Exception e){

System.out.println(“Exception”);

}catch(NullPointerException e){

System.out.println(“ArithmeticException”);

}catch(ArithmeticException e) {

System.out.println(“ArithmeticException”);

}finally {

System.out.println(“finally”);

}

return 0;

}

public static void main(String[] args) {

Test demo = new Test();

System.out.println(“商是:” + demo.div(9, 0));

}

}

A.Exception finally商是:0 B.ArithmeticException finally商是:0

C.finally商是:0 D.编译报错

多选题

(1)以下说法正确的是(ACD)。

A.Throwable是Error的父类 B.Throwable是Exception的子类

C.Throwable是Object的子类 D.Throwable实现了Serialiable接口

填空题

(1)所有的异常都是从 Throwable 继承而来的,是所有异常的共同祖先。

简答题

(1)写出5种常见的运行时异常。

空指针,数组越界,算术异常,类转换,数组存储异常。

(2)运行时异常和编译时异常的区别。

编译时异常继承自Exception,编译期间会主动检查这种异常,发现报错后要求我们处理。

运行时异常继承自RuntimeException编译期间,不会检查这种异常,也不要处理,但是运行期间,可能抛出这种类型的异常。

(3)Error和Exception区别。

error表示错误情况,0.5是程序出现了比较严重的问题,并且程序自身无法进行处理。

exception表示异常情况,大多数是可以通过特定的方式进行处理,并且处理完后,程序还可以继续往下正常运行。

(4)Java程序中通常有哪几种方式处理异常,各有什么特点。

在Java应用程序中,异常处理机制为:抛出异常,捕捉异常。

抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。

捕捉异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器(exception handler)。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。

编程题

(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();

}

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Ale-阿乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值