java 异常练习题_[Java教程]异常练习及面试题——博客园:执、著

[Java教程]异常练习及面试题——博客园:执、著

0 2016-12-27 22:00:10

已知:public class ExceptionText{

public static void main(String[] args){

try{

int i=1;

System.out.println(i++);

}finally{

System.out.println(++i);

}

}

}

程序编译并运行的结果为( C)

A.1 2           B.1 1           C.编译错误            D.1

解析:变量i只在try语句块内定义,所以其有效范围仅限于try语句块,finally语句块不能访问i,所以编译错误

已知:public class ExceptionDemo{

public static void main(String[] args){

try{

System.out.println("i="+(i++));

int m=10/0;

}catch(ArithmeticException e){

throw new ArithmeticException("算术异常");

e.printStackTrace();

}finally{

System.out.println("i="+(++i));

}

}

}

程序编译并运行的结果为( D)

A. 0 2

B. i=1

java.lang.ArithmeticException:/by zero

at ExceptionDemo.main(ExceptionDemo.java.7)

i=2

Exception in thread"main" java.lang.ArithmeticException:

at ExceptionDemo.main(ExceptionDemo.java.12)

C.

i=0

java.lang.ArithmeticException:/by zero

at ExceptionDemo.main(ExceptionDemo.java.7)

i=2

Exception in thread"main" java.lang.ArithmeticException:算术异常

at ExceptionDemo.main(ExceptionDemo.java.12)

D.编译错误,因为无法访问e.printStackTrace();

解析:throw语句后面不能紧跟其他语句,因为这些语句都没有被执行的机会

已知:

public class T3 {

public static void main(String[] args) {

int i=0;

try {

System.out.println("i="+(i++));

int m=10/0;

} catch (ArithmeticException e) {

System.exit(0);

e.printStackTrace();

}finally{

System.out.println("i="+(++i));

}

}

}

程序编译并运行的结果为(B)

A. i=0 i=2

B.i=0

C.i=0

java.lang.ArithmeticException:/by zero

at ExceptionDemo.main(T3.java.7)

D.编译错误

解析:在finally语句块之前执行了System.exit(0)退出运行,则finally语句块将不会被执行

已知:

public class T3 {

public static void main(String[] args) {

int n=fun(2);

System.out.println(n);

}

public static int fun(int i){

try{

int m=i/0;

return i++;

}catch(ArithmeticException e){

return (i+3);

}finally{

return (i+8);

}

}

}

程序编译并运行的结果为(C)

A.2            B.5            C.10               D.编译错误

解析:在执行try或catch语句块中的return语句时,假如有finally语句块,会先执行finally语句块。所以上面程序中先执行的是finally语句块中的return语句,返回10并退出方法

public class T3 {

public static void main(String[] args) {

int n=fun(2);

System.out.println(n);

}

public static int fun(int i){

try{

return i++;

}finally{

return i+8;

}

}

}

该代码的运行结果为11

public class T3 {

public static void main(String[] args) {

int n=fun(2);

System.out.println(n);

}

public static int fun(int i){

try{

return i++;

}finally{

i=i+8;

}

}

}

该代码的运行结果为2

public class T3 {

public static String output="";

public static void foo(int i){

try{

if(i==1)

throw new Exception();

output+="1";

}catch(Exception e){

output+="2";

return;

}finally{

output+=3;

}

output+=4;

}

public static void main(String[] args) {

foo(0);

System.out.println(output);

foo(1);

System.out.println(output);

}

}

改程序运行结果:

134

13423

(方法覆盖)有如下代码

class Super {

public void method() throws IOException {

}

}

public class MySub extends Super {

@Override

public void method()//_1_______________________ {

}

}

问:

在//1 处,填入以下________________________代码编译无法通过(C)

A.throws java.io.IOException

B.throws java.io.FileNotFoundException, java.io.EOFException

C.throws java.sql.SQLException

D.不抛出任何异常,即什么都不填写

与C、C++等语言相比,Java的异常处理机制有何优点?

答:1. 将错误代码从常规代码中分离出来,提高了程序的可读性,简化了程序的结构;2.允许对错误进行修正,可以对错误类型和错误差别进行分组,错误的处理变得规范;3.调用栈向上传送错误,方便定义错误和维护;4.可以使用catch语句输出错误信息;5.防止程序自动中断程序(try-catch)

error和exception有什么区别?

Error表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题。比如:内存资源不足等。对于这种错误,程序基本无能为力,除了退出运行外别无选择,它是由Java虚拟机抛出的。

Exception表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。

常见异常

ArithmeticException算术异常、ArrayIndexOutOfBoundsExceptin数组越界异常、ClassCastException对象转换异常、NullPointerException空指向异常、ArrayStoreException数组存储异常

本文网址:http://www.shaoqun.com/a/278565.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值