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

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.xdnf.cn/news/17143.html

相关文章:

  • Git `cherry-pick` 工具汇总
  • 数组指针-函数指针-回调函数
  • 大屏数据展示页面,数据可视化可以用到的框架和插件
  • docker启动出现Error response from daemon: Container的问题【已解决】
  • List、ArrayList 与顺序表
  • VSCode:基础使用 / 使用积累
  • shell基础之EOF的用法
  • React:受控组件和非受控组件
  • 2025年测绘程序设计模拟赛一--地形图图幅编号及图廓点经纬度计算
  • 202506 电子学会青少年等级考试机器人六级实际操作真题
  • 简单介绍cgroups以及在K8s中的应用
  • copy_file_range系统调用及示例
  • CubeFS存储(一)
  • HTML应用指南:利用GET请求获取全国OPPO官方授权体验店门店位置信息
  • css优化、提升性能方法都有哪些?
  • LINUX-磁盘管理
  • 基于2025年《Science》期刊论文的科研图表Python绘制分析
  • 二、Envoy静态配置
  • Linux环境下部署SSM聚合项目
  • 阿里云polardb-x 2.0迁移至华为云taurusdb
  • 安卓雷电模拟器安装frida调试
  • BottomSheetDialogFragment 设置背景为透明无效果(解决方法)
  • antd组件select下拉数据分页加载
  • vcpkg: 一款免费开源的C++包管理器
  • 计算机网络:如何判断B或者C类IP地址是否划分了子网
  • 基于Hadoop的木鸟民宿数据分析与可视化、民宿价格预测模型系统的设计与实现
  • CAN通信
  • 解决Node.js v12在Apple Silicon(M1/M2)上的安装问题
  • 使用R将nc文件转换为asc文件或者tif文件
  • 下载Android studio