前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >细品Java中的异常体系

细品Java中的异常体系

作者头像
袁新栋-jeff.yuan
发布2020-12-01 10:33:40
1.5K0
发布2020-12-01 10:33:40
举报
文章被收录于专栏:用户4352451的专栏

Java中的异常

异常的基本定义:

  1. 异常情形是指阻止当前方法或者作用域继续执行的问题。
  2. 异常处理机制就是当程序发生异常时,它强制终止程序运行,记录异常信息并将这些信息反馈给我们,由我们来确定是否处理异常。

异常体系

1. Java中的异常
  • Throwable是java语言中所有错误和异常的超类(万物即可抛)。它有两个子类:Error、Exception。
  • Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类。
  • Exception 是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。
2. Exception的两个类型
  1. RuntimeException不可检查异常,如 NullPointerException ,ArrayIndexOutOfBoundsException。还有Erro也是不可检查异常(OutOfMemoryError等)
  2. 除了Error 和 RuntimeException的其它异常。javac强制要求程序员为这样的异常做预备处理工作(使用try…catch…finally或者throws)。在方法中要么用try-catch语句捕获它并处理,要么用throws子句声明抛出它,否则编译不会通过。
  3. 检查异常再描述Java的设计者设计了检查性异常(Checked exceptions)。当方法引发“检查性异常”时,“检查性异常”将成为方法符号的一部分。例如:如果方法抛出了IOException ,我们必须显式地使用方法符号(在Java中是try…catch),如果不这样做的话将会导致编译时错误(compile-time error)(来源WIKI)
3. Java异常类和接口集合(如下图)
在这里插入图片描述
在这里插入图片描述

异常捕获的原则

4. 异常捕获规则

尽量不要捕获类似 Exception 这样的通用异常

  • 意义在于代码更易懂,捕获异常的目的不是说只要有异常我就捕获然后就处理,但是在特殊情况下其中一些异常我们是不需要处理的。有时候我们也希望异常可以被扩散出去。在平时开发,
  • 我们都是将异常直接吞掉然后打印异常日志。再返回一个异常的值给client。这种方式其实你把异常捕获且处理了这也是没有问题的。写完代码后也不知道会发生那些异常,直接就Exception e进行捕获处理了。这是不专业的一种表现,且使用了Trycatch()的代码会在变异阶段加上指令,如果没有异常程序性能不会减少很多但是如是有异常然后处理,就会很浪费性能的。所以还是尽量少用trycatch 将其异常进行向上抛出,最后全局捕获。

不使用e.printStackTrace()进行异常捕获。

遵循 晚抓也就是进行处理异常。使用严谨的异常处理逻辑进行重新组装,进行提示clinet,和开发人员

总结

  1. Java中异常的定义
  2. Java中的Erro和Exceoption
  3. Erro和Except和Exception中的RuntimeException是不可检查异常。之外的都是可检查异常必须进行显示捕获操作才不会发生编译错误
  4. 使用try{}catch()进行异常捕获的时候会产生快照,在基础服务和系统中不可忽略。
  5. 捕获异常的集中套路:捕获具体的异常,不生吞异常,不适用e.printStatck()打印异常,遵循Throw early, catch late

参考

  1. https://time.geekbang.org/column/article/6849
  2. https://blog.csdn.net/pyd950812/article/details/103717212
  3. https://zhuanlan.zhihu.com/p/93836930
  4. https://zh.wikipedia.org/wiki/%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/11/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java中的异常
    • 异常的基本定义:
      • 异常体系
        • 1. Java中的异常
        • 2. Exception的两个类型
        • 3. Java异常类和接口集合(如下图)
      • 异常捕获的原则
        • 4. 异常捕获规则
    • 总结
    • 参考
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档