2024年Java基础复习(DayTwelve):异常、断言,阿里秋招面试真题解析

最后

金三银四马上就到了,希望大家能好好学习一下这些技术点

学习视频:

大厂面试真题:

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 访问Null指针

不是派生于RuntimeException的异常包括

  • 试图超越文件末尾继续读取数据

  • 试图打开一个不存在的文件

  • 试图根据给定的字符串查找Class对象,而这个字符串表示的类并不存在

Java将派生于Error类或RuntimeException类的所有异常称为非检查型异常,所有其他的异常称为检查型异常

异常处理方式

抛出异常
捕捉异常

捕捉异常使用的是try-catch语句

只要在try语句块中的任何代码抛出了catch子句中指定的一个异常类,那么就会执行下面的操作

  • 程序将跳过try语句块的其余代码

  • 执行catch子句中的处理器代码

如果try语句块中的代码没有抛出异常,那么程序就会跳过所有catch子句

通常来说,catch处理器最好的选择是:什么也不做,而是将异常传递给调用者,也就是让调用该方法的人去操心这个异常问题

在这里插入图片描述

看一下几个捕捉到的异常对象的函数

  • e.getMessage:获取异常对象的信息

  • e.getClass:获取异常对象的class类型

可以捕捉多个异常也可以对捕捉到的多个异常进行合并

假如对几个异常处理的动作是一样的,我们就可以进行合并,但合并的时候,要注意合并的异常类型彼此之间是不可以存在继承关系的,因为异常变量隐含为final变量

合并异常可以让代码看起来比较简单,而且生成的字节码文件只有公共catch代码块

在这里插入图片描述

在这里插入图片描述

可以看到,当合并的异常具有继承关系的时候,会提示重复捕捉了,只需要捕捉父类异常即可。

当然,我们也可以同时捕捉多个异常

在这里插入图片描述

再次抛出异常与异常链

前面提到过,catch块最好的处理就是什么都不做,然后返回给调用者进行处理

针对这个,我们也可以在catch块中再次进行抛出异常,让上一层的调用者进行捕捉,然后进行处理,也可以通过这种方式来改变抛出异常的类型

在这里插入图片描述

不过还有更好的处理方式,可以把原始异常设置为新异常的原因,即调用e.initCause方法

在这里插入图片描述

在上一层,我们可以去获取原因

在这里插入图片描述

在这里插入图片描述

finally子句

有时候,代码抛出一个异常的时候,try剩下的代码就不会再执行,并且退出这个方法,那如果有资源要进行释放怎么办,这些资源无论有没有异常抛出,最后都要进行释放,那么就可以使用finally子句

不管是否有异常被捕获,finally子句中的代码都会执行

那么假如在finally中return会发生什么?

在这里插入图片描述

在这里插入图片描述

可以看到,结果返回的是finally里面的值,也就是finally语句块会提前return,从而阻止了try或者catch的return

那么如果catch抛出异常,会不会直接给上一层给捕捉到呢?

在这里插入图片描述

在这里插入图片描述

答案是不会的,仍然会执行finally,可以理解成finally会在结束try或者catch的时候调用,调用完finally再结束try或者catch

try-with-Resources语句

当要关闭资源的时候

在这里插入图片描述

结果如下

在这里插入图片描述

也可以对多个资源进行操作

在这里插入图片描述

在这里插入图片描述

总结

三个工作日收到了offer,头条面试体验还是很棒的,这次的头条面试好像每面技术都问了我算法,然后就是中间件、MySQL、Redis、Kafka、网络等等。

  • 第一个是算法

关于算法,我觉得最好的是刷题,作死的刷的,多做多练习,加上自己的理解,还是比较容易拿下的。

而且,我貌似是将《算法刷题LeetCode中文版》、《算法的乐趣》大概都过了一遍,尤其是这本

《算法刷题LeetCode中文版》总共有15个章节:编程技巧、线性表、字符串、栈和队列、树、排序、查找、暴力枚举法、广度优先搜索、深度优先搜索、分治法、贪心法、动态规划、图、细节实现题

最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

《算法的乐趣》共有23个章节:

最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

  • 第二个是Redis、MySQL、kafka(给大家看下我都有哪些复习笔记)

基本上都是面试真题解析、笔记和学习大纲图,感觉复习也就需要这些吧(个人意见)

最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

  • 第三个是网络(给大家看一本我之前得到的《JAVA核心知识整理》包括30个章节分类,这本283页的JAVA核心知识整理还是很不错的,一次性总结了30个分享的大知识点)

最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

[外链图片转存中…(img-PXNRQNHC-1714843572593)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值