java基础之异常练习题

异常

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. 异常发生时才被执行
  4. 异常没有发生时才被执行

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
  3. throws java.sql.SQLException
  4. 不能抛出任何异常

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");
        }
    }
}
相关推荐
seasugar5 分钟前
记一次Maven拉不了包的问题
java·maven
Allen Bright13 分钟前
【Java基础-26.1】Java中的方法重载与方法重写:区别与使用场景
java·开发语言
苹果酱056715 分钟前
Golang的文件解压技术研究与应用案例
java·vue.js·spring boot·mysql·课程设计
秀儿y18 分钟前
单机服务和微服务
java·开发语言·微服务·云原生·架构
ybq1951334543119 分钟前
javaEE-多线程案例-单例模式
java·开发语言
kiiila30 分钟前
【Qt】编辑框/按钮控件---实现HelloWorld
开发语言·qt
Dcy_ASK33 分钟前
认识Python语言
开发语言·python
seasugar35 分钟前
Maven怎么会出现一个dependency-reduced-pom.xml的文件
xml·java·maven
一只淡水鱼6639 分钟前
【mybatis】基本操作:详解Spring通过注解和XML的方式来操作mybatis
java·数据库·spring·mybatis
唐叔在学习1 小时前
【唐叔学算法】第19天:交换排序-冒泡排序与快速排序的深度解析及Java实现
java·算法·排序算法