首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >面试刷题2:Exception和Error的区别?

面试刷题2:Exception和Error的区别?

作者头像
李福春
发布2025-07-01 16:24:01
发布2025-07-01 16:24:01
1960
举报
图片
图片

世界上不存在永远不出错的程序。可靠的程序必须处理好意外情况。 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: 相同种类的异常集中处理

代码如下:

代码语言:javascript
复制

try (BufferedReader br = new BufferedReader(…);
     BufferedWriter writer = new BufferedWriter(…)) {// Try-with-resources
// do something
catch ( IOException | XEception e) {// Multiple catch
   // Handle it
}

在处理异常的时候,有4个基本规则需要注意:

  1. 不要catch 最普遍的Exception ,而应该优先捕获具体的异常,可以留下足够的诊断信息;
  2. 不要生吞异常,应该尝试抛出或者写到日志,否则无法判断异常发生的位置;
  3. 不要使用e.printStackTrace(),在分布式系统中,无法确定输出到了什么位置,应该输出到日志中;
  4. 提早抛出,晚点捕获;提高效率;

自定义异常

自定义异常的时候需要注意两点: 1,尽量不要定义检查异常 2,异常需要保留足够的诊断信息,但是也需要脱敏;

异常影响性能

主要两个原因:

  1. try-catch语句会影响jvm对代码的优化,所以应该只包含必要的代码段;
  2. 每次实例化一次Exception,jvm对线程栈进行一次快照,这是一个比较重的操作,非常耗费资源;
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 李福春持续输出 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java异常的类层级
  • Exception VS Error
  • try-catch-finally
  • 自定义异常
  • 异常影响性能
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档