当前位置: 首页 > news >正文

JavaSE---异常的经典面试题

1.throw和throws的区别

在Java中throw和throws都是用来捕获异常的两个关键字。

首先,它们在使用的位置上不同,throw出现在代码块,throw关键字允许程序员根据自己的代码逻辑去抛出异常对象或者一些自定义的异常对象,而throws关键字出现在函数头,throws后面跟的是异常类型,方法内部如果出现了多个异常,throws后面必须跟多个异常类型,之间用逗号隔开

其次就是异常的出现这方面的不同,throw关键字是根据代码逻辑去预判一些异常的出现并主动去抛出这些异常,也就是说如果执行了throw就表示代码中就一定出现了这些异常,而throws关键字只是表示了这种异常出现的可能性,代码中不一定会出现这种异常

最终就是throw和throws都是一种消极的处理异常的方式,因为throw和throws是抛出异常或者可能抛出异常,都是交给方法的调用者去处理异常的

2.finally中的语句一定执行吗?

首先,使用finally关键字是为了保证程序正常或者异常退出时,实现对一些必要资源的回收,因为finally的执行时机是在方法返回之前,如果出现一些类似于死循环等等的情况,就会导致finally中的语句无法执行。

第一个情况就是try代码快中出现了死循环或者死锁的情况,就会导致程序阻塞在死循环或者死锁的那个地方,从而导致finally中的语句无法执行

第二个情况就是如果在try代码快中调用的System.exit()方法,正常情况下,当try或者catch执行完毕之后,JVM会继续执行finally代码快,但是调用的System.exit()方法之后,就会强制终止JVM,这样就会导致finally中的语句无法执行

第三个情况就是关于守护线程的情况,我们知道非守护线程会阻止JVM的退出,而对于守护线程来说,如果非守护线程结束了,即使守护线程还没有运行完毕,由于非守护线程结束,所有的守护线程都会被强制借宿,此时如果try-catch-finally代码快中处于这些守护线程中,自然而然finally代码块的语句就不会执行了

以上就是我们想的到的关于finally中语句无法执行的一些情况了

3.Error和Exception有什么区别

Error和Exception都是Throwable的子类

Error指的是JVM无法解决的严重问题,这些问题通常是程序无法处理或恢复的,比如栈溢出和内存耗尽

Exception是指程序运行时可能出现的可处理的一些异常情况,这些异常情况可以通过完善代码的逻辑来解决

http://www.lryc.cn/news/612644.html

相关文章:

  • SUNO音乐歌曲生成平台的关键字指令
  • 内网穿透原理和部署教程
  • [激光原理与应用-171]:测量仪器 - 能量型 - 激光能量计(单脉冲能量测量)
  • YOLOv8面试知识
  • Spring事务失效场景?
  • 【基础知识】springboot+vue 基础框架搭建(更新中)
  • 下载 | Windows Server 2016最新原版ISO映像!(集成7月更新、标准版、数据中心版、14393.8246)
  • MacOS Docker 安装指南
  • 进程、网络通信方法
  • 在Linux下访问MS SQL Server数据库
  • 机器学习工程化 3.0:从“实验科学”到“持续交付”的 7 个关卡
  • 【2025最新】在 macOS 上构建 Flutter iOS 应用
  • 函数、方法和计算属性
  • 「iOS」————持久化
  • HashMap寻址算法
  • 如何显示一个 Elasticsearch 索引的字段
  • Opencv-管理图片
  • 冷库温湿度物联网监控系统解决方案:冷链智能化
  • [无需 Mac] 使用 GitHub Actions 构建 iOS 应用
  • 嵌入式硬件学习(十一)—— platform驱动框架
  • 嵌入式硬件中MOSFET基本原理与实现
  • 区块链技术原理(2) -数据结构
  • 嵌入式硬件中MOSFET基本控制详解
  • 「iOS」————自动释放池底层原理
  • 基于Python+Vue+Mysql实现(物联网)智能大棚
  • C 语言主控开发与显控开发能力体系及技术栈详解,STM32、QT、嵌入式、边缘系统显示
  • Spring、Spring MVC、MyBatis 和 Spring Boot的关系
  • STM32U5 周期性异常复位问题分析
  • 物联网架构全解析:华为“1+2+1”与格行随身WiFi,技术如何定义未来生活?
  • JVM学习日记(十七)Day17——性能监控与调优(四)