面试刷题2:Exception和Error的区别?
世界上不存在永远不出错的程序。可靠的程序必须处理好意外情况。
java的异常处理机制降低了编写可靠程序的门槛。
当系统运行变慢,排查发生最频繁的Excetion可以作为一种调优手段。
那么: Exception和Error有什么区别?
我是李福春,我在准备面试。
通过本篇,你可以学到下图的知识点。
Java异常的类层级
在java体系中,Excetion和Error的关系如上,常见的子类也可见12;
Exception VS Error
先分开介绍:
Exception: 可以预见到的异常情况,应该被捕获或者处理,在java中,分为检查异常(编译期)和不检查异常(运行期)。
Error: 出现了错误系统不能正常运行或者恢复,一般情况不容易发生;
然后说共同点:都继承自Throwable,在java中至于Throwable的子类可以被Catch或者Throw;
try-catch-finally
java提供的异常处理语法。
随着java的发展,有更高级的语法优化。
try-with-resource : 自动关闭资源
multile exception: 相同种类的异常集中处理
代码如下:
try (BufferedReader br = new BufferedReader(…); BufferedWriter writer = new BufferedWriter(…)) {// Try-with-resources // do something catch ( IOException | XEception e) {// Multiple catch // Handle it }
在处理异常的时候,有4个基本规则需要注意:
- 不要catch 最普遍的Exception ,而应该优先捕获具体的异常,可以留下足够的诊断信息;
- 不要生吞异常,应该尝试抛出或者写到日志,否则无法判断异常发生的位置;
- 不要使用e.printStackTrace(),在分布式系统中,无法确定输出到了什么位置,应该输出到日志中;
- 提早抛出,晚点捕获;提高效率;
自定义异常
自定义异常的时候需要注意两点:
1,尽量不要定义检查异常
2,异常需要保留足够的诊断信息,但是也需要脱敏;
异常影响性能
主要两个原因:
- try-catch语句会影响jvm对代码的优化,所以应该只包含必要的代码段;
- 每次实例化一次Exception,jvm对线程栈进行一次快照,这是一个比较重的操作,非常耗费资源;
原创不易,转载请注明出处。
no pays,no gains!
标签:
Java技术 技术管理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架