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");
        }
    }
}
相关推荐
xushichao198913 小时前
实时数据压缩库
开发语言·c++·算法
liurunlin88813 小时前
Go环境搭建(vscode调试)
开发语言·vscode·golang
故事和你9113 小时前
sdut-python-实验四-python序列结构(21-27)
大数据·开发语言·数据结构·python·算法
SuperEugene13 小时前
TypeScript+Vue 实战:告别 any 滥用,统一接口 / Props / 表单类型,实现类型安全|编码语法规范篇
开发语言·前端·javascript·vue.js·安全·typescript
liuyao_xianhui13 小时前
优选算法_模拟_提莫攻击_C++
开发语言·c++·算法·动态规划·哈希算法·散列表
luom010214 小时前
SpringBoot - Cookie & Session 用户登录及登录状态保持功能实现
java·spring boot·后端
毕设源码-朱学姐14 小时前
【开题答辩全过程】以 骨科术后营养餐推荐系统为例,包含答辩的问题和答案
java
丶小鱼丶14 小时前
数据结构和算法之【栈】
java·数据结构
.select.14 小时前
c++ 移动赋值/移动构造函数
开发语言·c++
希望永不加班14 小时前
SpringBoot 核心配置文件:application.yml 与 application.properties
java·spring boot·后端·spring