Java异常->常见面试题汇总
2023-09-11 14:15:13 时间
Java异常->常见面试题汇总
1. Java中异常的分类
1>. 父类:Throwable
(1) Throwable:位于 java.lang包中,是所有错误、异常的父类
(2) 常见 方法:
a.String getMessage():返回字符串类型异常信息,给用户做提示信息
b.void printStackTrace():打印跟踪方法调用栈而获取的详细异常信
息,作用:用于开发人员做程序调试,建
议在catch中调用,尽可能不要省略
2>. 子类:Error,是Throwable直接子类,代表错误
(1) 特点:代表仅靠程序本身无法恢复的严重错误
(2) 案例:
内存溢出:java.lang.StackOverflowError(栈溢出)、
OutOfMemoryError堆溢出
(3) 处理:一旦遇到 Error,无法靠程序处理(不要试图捕获)
3>. 子类:Exception,是Throwable直接子类,代表异常
(1) RuntimeException:运行时异常、未检查异常
a. 定义:RuntimeException异常及子类或是间接子类统称为运行时异常
b. 特点:运行时异常在编译过程中编译器不会检测此类异常,运行时报错
c. 处理:可以处理也可以不处理,可以通过规范代码避免
d. 案例:常见的运行时异常:
I.java.lang.ClassCastException:类型转换异常
II. java.lang.NullPointerException:空指针异常
III.java.lang.ArrayIndexOutOfBoundsException
:数组下标越界
IV.java.lang.StringIndexOutOfBoundsException:
字符串下标越界
V. java.lang.IndexOutOfBoundsException:List集合下标越界
VI. java.lang.NumberFormatException:数字的格式转换异常
(2) 非RuntimeException:非运行时异常 已检查异常(CheckedException)
a. 定义:和RuntimeException没有任何继承关系的异常类统称为非运行
时异常
b. 特点:编译过程中编译器检测此类异常,在编译过程中报错
c. 处理:必须处理,如果不处理,无法运行
注意:编译报错有两种情况:
I. 语法出现错误
II. 有可出现非运行时异常
d. 案例: Class.forName("TestStudent"); // 出现非运行时异常
2. 写出 throw 和 throws 的区别。
throw用于手动产生异常,定义在方法内部
语法:throw new 异常类名();
throws用于消极处理异常,定义在方法的声明位置
修饰符 返回值类型 方法名(形参列表)throws 异常类名{}
3. 写出 final 、finalize、finally的区别
final:修饰符,可以修饰变量、方法、类
final修饰的变量作用范围内常量
final修饰的方法允许继承不允许被覆盖
final修饰的类不能被继承,即没有子类
finalize:方法名,垃圾回收器回收垃圾对象时,jvm自动调用方法
finally:应用积极处理异常try…catch…finally中,必须执行的语句
4. 方法覆盖的要求。
-
子类的方法名、形参列表、返回值类型和父类相同
-
子类的方法修饰符和父类相同或是比父类更宽
-
子类的方法不能抛出比父类更宽的异常
5. 手动写出一个自定异常类MyException.
-
定义一个类继承Exception或是其子类,如果基于定义的类抛出异常为运行时异常,则需要继承RuntimeException或是其子类
-
提供两个构造方法:
(1) 无参数的构造方法
(2) 带有String类型参数的构造方法,参数代表异常信息,借助
super(message) 为父类属性massage 赋值
相关文章
- 深入java面向对象五:Java的内存管理
- 2019年腾讯最新Java工程师面试题
- java中匿名类的注意细节
- java中eclipse控制台接受输入的方法
- java实现第六届蓝桥杯奇怪的数列
- Java实现矩阵相乘问题
- Java实现 蓝桥杯VIP 算法提高 扫雷
- Java实现 蓝桥杯VIP 算法训练 新生舞会
- Java实现 洛谷 P1060 开心的金明
- 聊聊Java内存模型
- java知识点查漏补缺-- 2020513
- 【JAVA】 03-Java中的异常和包的使用
- [Unit Testing Java] Unit testing with Mockito vs. integration testing
- java和C#异常处理的差异
- java 11 标准Java异步HTTP客户端
- 【JAVA】 03-Java中的异常和包的使用
- Java 并发常见面试题总结(中)
- Java 并发常见面试题总结(上)
- 【Java面试题视频讲解】合并相同索引的值
- 如何通过Java代码判断当前的环境是否支持JRE 9
- 当年的java考试:Java景区预约登记管理系统(maven整合servlet)
- 常见Java面试题 在Queue中poll()和remove()有什么区别?
- 【java】Java经典面试题整理(附答案)
- 【java】Java生成微信小程序二维码
- Java:org.apache.commons.codec.digest.DigestUtils计算MD5值
- JVM语言生态结构原理图 从Java,Kotlin,Scala,Groovy等语言的编译、执行全过程图示解析...
- java 程序运行的基础知识【Java bytecode】
- mysql-connector-java与Mysql、Java的对应版本
- java面试题:网络协议
- 【java】Java IO体系总览
- Java核心类库之(Lambda表达式)
- JAVA开发讲义(二)-Java程序设计之数据之谜二