java基础之异常练习题

发布时间:2024年01月10日

异常

1.Java?中所有的错误/异常都继承自?Throwable类;在该类的子类中,?Error 类表示严重的底层错误, 对于这类错误一般处理的方式是?直接报告并终止程序 ?Exception 类表示异常。

2.查阅API,完成以下填空:

(1)异常类java.rmi.AlreadyBoundException,从分类上说,该类属于?已检查 (已检查|运行时)异常, 从处理方式上说,对这种异常?抛出 处理。

(2)异常类java.util.regex.PatternSyntaxException,从分类上说,该类属于?运行时 (已检查|运行时) 异常,从处理方式上说,对这种异常?try catch处理。

3.Java?中用来抛出异常的关键字是()

A.?try B.?catch C.?throw D.?finally

4.在异常处理中,释放资源、关闭文件等应由? 处理()

A. ?try?语句 B. catch?语句 C. finally?语句 D.?throw?语句

5.finally?语句块中的代码()

  1. 总是被执行
  2. 当try?语句块后面没有catch?时,finally?中的代码才会被执行
  3. 异常发生时才被执行
?
  1. 异常没有发生时才被执行

6.自定义异常类时,可以继承的类是()

A.?Error????B.?ArrayList C.?Exception 不行D.?NullPointerException

7.对于 try{ ... }catch...语句的排列方式,下列描述正确的是()

  1. 子类异常在前,父类异常在后
  2. 父类异常在前,子类异常在后
  3. 只能有子类异常
  4. 父类异常不能与子类异常同时出现

8.仔细阅读以下代码,将代码补全。

?throw new NullPointException();

try{

throw new ClassCastException(“类型转换出错”);

}catch(ClassCastException e){

System.out.orintln(e.getMessage());

}

9.代码改错:仔细阅读以下程序,将错误的代码进行改正。

class MyException extends RuntimeException;

try{

m();

}catch(ArithmeticException e){

System.out.println(“ArithmeticException”);

}catch(Exception e){

System.out.println(“Exception”);

}finally{

return 100;

}

?

10.仔细阅读以下代码,当读入的 n?分别为 1,2,3,4,5?时,输出的结果分别是什么?

为1时:

main1

ma1

mb1

catch EOFException

In Finally

main2

为2时:

?main1

ma1

mb1

catch IOException

In Finally

main2

为3时:

main1

ma1

mb1

catch SQLException

In Finally

main2

为4时:

main1

ma1

mb1

catch Exception

In Finally

main2

11.?仔细阅读以下代码:

在//1?处,填入以下?AB 代码可以编译通过,在//2?处,填入?D 代码可以编译通过

  1. throws?java.io.IOException
  2. throws java.io.FileNotFoundException,?java.io.EOFException
?
  1. throws?java.sql.SQLException
  2. 不能抛出任何异常

12.仔细阅读以下代码,关于程序描述正确的是()

A.?不通过??未初始化变量 B.?编译通过,输出-1

C.?编译通过,输出?0 D.?以上描述都不正确

13.仔细阅读以下代码,在ma?方法中,当读入的b?为?100?时,输出结果为?100 ,当读入的b?为?0 时,输出结果为?100??

14.仔细阅读以下代码,在ma?方法中,读入整数b,如果读入的值为?10,则输出?ma1, ma21,In fianlly ;如果读入的值为?0,则输出?ma1,In Finally

15.仔细阅读以下代码,是否能编译通过?如果不能,应该如何修改?

class MySub2 extends MySub{

????public void m() throws EOFException{}

}

16.仔细阅读以下代码,关于程序描述正确的是()

A. 编译出错

B. 编译正常,输出 main1 ma1 In Catch

C. 编译正常,运行时出错

D. 以上描述都不正确

17.仔细阅读以下程序,下面哪些代码放在/*1*/处可以编译通过()

A. catch(NullPointerException npe){}

B. catch(IOException ioe){}

C. catch(SQLException sqle){}

18.简述 final、finlize、finally 的区别。

fianl 是一个修饰符,用来修饰类,引用,方法,属性,表示最后的,不可更改的

final

1.当它修饰一个变量时,表示这个变量是常量,一旦赋值就不能被修改。

2.当它修饰一个方法时,表示这个方法不能被子类重写。

3.当它修饰一个类时,表示这个类不能被继承。

finalize: 是Java中Object类的一个方法,也被称为终结器方法。当垃圾收集器决定回收一个对象时,会首先调用该对象的finalize方法。这个方法在Java中被视为一种特殊的"逃逸区",允许对象在垃圾回收前进行一些清理工作。然而,由于性能问题,从Java 9开始,finalize方法已被弃用。

finally: 是Java中异常处理的一部分。在try-catch-finally结构中,无论try块中的代码是否抛出异常,finally块中的代码总是会被执行。这使得finally块成为处理清理工作的理想场所,例如关闭文件、网络连接等。

19.在 try 里有 return 语句,那 finally 里的语句还会执行么?为什么?

会,因为里边的内容必须被执行

如果在 try 块中有 return 语句,那么 finally 块中的代码仍然会被执行。这是因为 finally 块是异常处理的一部分,它的作用是确保一些必要的清理工作被执行,无论 try 块中的代码是否成功执行或抛出异常

20.仔细阅读以下代码,写出程序执行的结果。

StepB ???SetpE

21.?编程:创建两个自定义异常类 MyException1 和 MyException2,要求如下:

(1) MyException1 为已检查异常,MyException2 为运行时异常;

(2) 这两个异常均具有两个构造函数:一个无参,另一个带字符串参数,参数表示产生异常的信息。

package com.by.exception;

public class MyRuntimeException extends NullPointerException{
????public MyRuntimeException(){}
????public MyRuntimeException(String message){
????????super(message);
????}
}
class Test{
????public static void main(String[] args) {
????????try {
????????????throw new MyRuntimeException("我的详细信息");
????????} catch (MyRuntimeException e) {
????????????System.out.println(e.getMessage());
????????}
????????throw new ClassCastException();
????}
}



package com.by.exception;

public class MyException2 extends Exception{
????public MyException2(){}
????public MyException2(String message){
????????super(message);
????}

}

22.在上一题的基础上,把下面代码补充完整。

?输出ex1详细放大调用栈信息

System.out.println(ex1.getMessage);

package com.by.exception;

public class TestMyException {
????public static void main(String[] args) throws MyException2 {
????????int n;
????????n=3;
????????try {
????????????m(n);
????????} catch (MyException1 ex1) {
????????????System.out.println(ex1.getMessage());
????????}catch (MyException2 ex2){
????????????System.out.println(ex2.getMessage());
????????????throw new MyException2("n==2");
????????}

????}
????public static void m(int n) throws MyException1, MyException2 {
????????if (n==1){
????????????throw new MyException1("n==1");
????????}else{
????????????throw new MyException2("n==2");
????????}
????}
}

文章来源:https://blog.csdn.net/zhzjn/article/details/135508812
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。