Java异常面试题

Java常见面试题_2022最新版

序号内容链接
1Java基础面试题https://blog.csdn.net/weixin_46030002/article/details/126399353
2Java集合容器面试题https://blog.csdn.net/weixin_46030002/article/details/126425298
3Java线程面试题https://blog.csdn.net/weixin_46030002/article/details/126518395
4Java异常面试题https://blog.csdn.net/weixin_46030002/article/details/126482778
5Spring常见面试题https://blog.csdn.net/weixin_46030002/article/details/127281194
6SpringMVC常见面试题https://blog.csdn.net/weixin_46030002/article/details/127057785
7Mybatis常见面试题https://blog.csdn.net/weixin_46030002/article/details/126026561
8MySQL常见面试题https://blog.csdn.net/weixin_46030002/article/details/126557564
9Redis常见面试题https://blog.csdn.net/weixin_46030002/article/details/126435834
  • Java常见面试题_2022最新版持续更新中…


一、异常基本概念的了解

1. 什么是异常

异常,见名知意思,就是错误,不正确的意思。在java语言中,异常是Java提供的一种识别及响应错误的一致性机制。将程序发生的不正常情况称为 异常。

2. 异常的分类

2.1. Throwable

Throwable 是 Java 语言中所有错误与异常的超类(基类)。

Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示发生了异常情况。

2.2 Error(错误)

定义:Error 类及其子类。程序中无法处理的错误,表示运行应用程序中出现了严重的错误。

2.3 Exception(异常)

定义:Exception 类及其子类。 程序本身可以捕获并且可以处理的异常。

2.3.1 运行时异常

RuntimeException 类及其子类,表示 JVM 在运行期间可能出现的异常。

2.3.2 编译时异常

Exception 中除 RuntimeException 及其子类之外的异常。

在这里插入图片描述

2.4 异常还可以如下分类
2.4.1 检查异常

编译器要求必须处理的异常。正确的程序在运行过程中,经常容易出现的、符合预期的异常情况。一旦发生此类异常,就必须采用某种方式进行处理。除 RuntimeException 及其子类外,其他的 Exception 异常都属于受检异常。编译器会检查此类异常,也就是说当编译器检查到应用中的某处可能会此类异常时,将会提示你处理本异常——要么使用try-catch捕获,要么使用方法签名中用 throws 关键字抛出,否则编译不通过。

2.4.2 非检查异常

编译器不会进行检查并且不要求必须处理的异常,也就说当程序中出现此类异常时,即使我们没有try-catch捕获它,也没有使用throws抛出该异常,编译也会正常通过。该类异常包括运行时异常(RuntimeException极其子类)和错误(Error)。
在这里插入图片描述

3. Java异常处理

3.1 异常处理关键字
  • 处理异常
    • try
    • catch
    • finally
try{
    // 可能产生异常的代码    
}catch(Exception e){
    // 异常处理方式1
}catch(Exception e){
    // 异常处理方式2
}
  • 抛出异常
    • throw
    • throws
public void throwTest() throws Exception {
	throw new Exception();
}
3.2 异常处理分类

在这里插入图片描述

二、常见面试题

异常的父类及继承关系

  • Throwable
    • Exception(异常)
    • Error(错误)

error 与 exception 的区别

  • error 系统级别的异常(错误)
    • 通常指的是JVM虚拟机相关的错误(系统崩溃,内存不足,堆栈溢出),一旦发生就会终止。
  • exception 可以捕获处理的异常,出现错误,对其进行处理,程序可以继续正常运行。
    运行时异常:RuntimeException 及其子类
    编译时异常:不是 RuntimeException 及其子类的异常(Checked Exception),比如IOException

处理异常的方式有哪些

  • 抛出
    • throw
    • throws
  • 处理
    • try…catch…finally

throw 和 throws 的区别

  • throw:是指真实抛出一个异常
  • throws:声明可能抛出一个异常

区别:

  • throws 出现在方法的声明中;throw 出现在方法体中
  • throws 表示出现异常的一种可能性,但是并不一定会发生这种异常;throw 则表示抛出了异常,执行一定会抛出这种对应的异常

常见的异常

  • IndexOutOfBoundsException : 下标越界异常
    • ArrayIndexOutOfBoundException:数组下标越界异常
    • StringIndexOutOfBoundException:字符串下标越界异常
  • NullPointException : 空指针异常
  • ClassCaseException : 数据类型转换异常
  • IllegalArgumentException : 非法参数异常
  • ArithmeticException - 计算异常
  • SecurityException : 安全性异常
  • NumberFormatException : 字符串转换为数字异常
  • IOException : IO 异常
    • FileNotFoundException : 文件没有找到异常
  • SQLException : 数据库异常
  • NoSuchMethodException : 方法不存在异常

常见的运行时异常有哪些

  • IndexOutOfBoundsException : 下标越界异常
    • ArrayIndexOutOfBoundException:数组下标越界异常
    • StringIndexOutOfBoundException:字符串下标越界异常
  • NullPointException : 空指针异常
  • ClassCaseException : 数据类型转换异常
  • IllegalArgumentException : 非法参数异常
  • NumberFormatException : 字符串转换为数字异常
  • ConcurrentModificationException:并发修改异常
  • SecurityException : 安全性异常
  • ArithmeticException - 计算异常

final,fianlly,finalize 的区别

  • final:final 是最终的意思,可以修饰变量,方法,类;用于声明变量,方法和类,分别表示被其修饰的变量不可变,被其修饰的方法不可重写,被其修饰的类不可继承。
  • finally:异常处理机制中处理语句结构的一部分,try…catch 后面,表示必定会执行,我们常用的是关闭资源。
  • finalize:Object 类的一个方法,在垃圾回收器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。该方法更像是一个对象生命周期的临终方法,当该方法被系统调用则代表该对象即将“死亡”,但是需要注意的是,我们主动行为上去调用该方法并不会导致该对象“死亡”(可能不会马上执行,像是做了提醒动作),这是一个被动的方法(其实就是回调方法),不需要我们调用。

try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally{}里的代码会不会被执行,什么时候被执行,在 return 前还是后?

会执行,在方法返回前执行
我们一般不会在 finally 中改变返回值,因为如果存在 finally 代码块,try 中的 return 语句就不会立即返回给调用方,而是记录下来,或者理解为作为一个临时变量存储下来;待 finally 语句块执行完毕后再向调用方返回值,如果这个值被修改就会返回修改后的值。

什么样的异常可以不需要 try…catch 或 throws

RuntimeException 及其子类异常

  • 持久更新中…
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java异常有关的面试题包括但不限于以下几个方面: 1. Error 和 Exception 的区别是什么? 2. 运行时异常和一般异常(受检异常)的区别是什么? 3. JVM 是如何处理异常的? 4. throw 和 throws 的区别是什么? 5. final、finally、finalize 有什么区别? 6. NoClassDefFoundError 和 ClassNotFoundException 的区别? 7. try-catch-finally 中哪个部分可以省略? 8. try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗? 9. 继承关系中的异常处理,例如类 ExampleA 继承 Exception,类 ExampleB 继承 ExampleA,如何处理异常? 10. 常见的 RuntimeException 有哪些? 11. Java常见异常有哪些? 这些面试题涵盖了Java异常的基本概念、异常处理机制以及异常处理的最佳实践等方面。在面试中,掌握这些问题的答案可以展示你对Java异常的理解和经验。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java异常常见面试题(全)](https://blog.csdn.net/weixin_47872288/article/details/122693228)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Java面试题Java基础面试题Java异常面试题Java面试宝典](https://download.csdn.net/download/shiyunzhe2021/87458097)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【2022最新Java面试宝典】—— Java异常面试题(33道含答案)](https://blog.csdn.net/qq_30999361/article/details/124560006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值