世界上不存在永远不出错的程序。可靠的程序必须处理好意外情况。
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 somethingcatch ( 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对线程栈进行一次快照,这是一个比较重的操作,非常耗费资源;

原创不易,转载请注明出处。

和catch的区别_面试刷题2:Exception和Error的区别?相关推荐

  1. mysql怎么刷题_面试刷题mysql1:一条sql语句是如何经过mysql的体系结构的?

    {port} -u${user} -p ,输入密码. 使用连接器连接服务端: 连接成功之后,权限修改不会影响当前连接,连接的有效期默认是8个小时: 连接之后,执行过程中使用内存会持续增加,应该定时重置 ...

  2. 暴露的全局方法_面试刷题36:线程池的原理和使用方法?

    线程池原理和使用在面试中被高频问到,比如阿里的面试题.下面我们针对问题来进行回答. 为什么要使用线程池? 线程池的使用场景有2: 1, 高并发场景:比如tomcat的处理机制,内置了线程池处理http ...

  3. linux sql命令行查询语句不要换行_面试刷题mysql1:一条sql语句是如何经过mysql的体系结构的?...

    mysql执行一条sql查询语句背后发生了什么呢? 我是李福春,我在准备面试,今天的题目是: mysql的体系结构是怎样的?一条sql语句在mysql的体系结构中经历了什么? 答: mysql体系结构 ...

  4. 1000 面试题,BAT 机器学习面试刷题宝典!

    点击上方,选择星标或置顶,每天给你送干货! 阅读大概需要好多分钟 跟随小博主,每天进步一丢丢 ID:Dr.Wu 公众号:大鱼AI 来源:CSDN 编辑:三石 刷题,是面试前的必备环节.本文作者便总结了 ...

  5. day6 AI面试刷题

    day6 AI面试刷题 1. 什么是集成学习算法? 2. 集成学习主要有哪几种框架, 并简述它们的工作过程? 3. Boosting算法有哪两类,它们之间的区别是什么? 4. 什么是偏差和方差? 5. ...

  6. 肝了一个月,我做了个免费的面试刷题网

    大家好,我是鱼皮. 如今找工作.面试实在是太卷了,每轮面试都 必考 八股文,不背不行.网上虽然有很多面试题,但过于分散,就导致很多朋友又不知道到哪去找题.该背哪些题了. 所以我决定做一个完全免费.干净 ...

  7. 程序员跳槽面试刷题必备,微软工程师放大招!| 程序员硬核评测

    整理 | 一一 出品 | AI科技大本营(ID:rgznai100) 春节刚过,年终奖收入囊中,属于工程师们一年一度的跳槽季也来了. 跳槽后薪水翻倍自然爽歪歪,但最怕的是面试翻车,那就悲剧了.可想而知 ...

  8. 面试鸭专业面试刷题网站源码 支持自由组卷/在线刷题等功能

    面试鸭 面试刷题 网站系统源码 面试鸭一个干净的面试刷题网站!专业面试刷题网站,助你成为面试达人!支持自由组卷.在线刷题.校招社招斩获大厂offer,求职必备! 面试鸭专业面试刷题网站源码: http ...

  9. java黑马面试_JavaWeb-黑马面面(面试刷题系统)项目实战

    经历了多次Java基础项目后,本次项目难度升级!挑战JavaWeb-- 黑马面面项目 . 黑马面面是一款面向程序员的面试刷题系统,服务于java开发工程师学习完毕后的复习问题,通过大量刷题,提高企业面 ...

最新文章

  1. vue脚手架和html,HTML和静态资源
  2. python gevent 协程
  3. mongdb安装使用
  4. 《数据结构与抽象:Java语言描述(原书第4版)》一JI2.3 抛出异常
  5. Struts2学习8--文件上传(多个文件上传)
  6. session_start() 对 HTTP_REQUEST扩展/fsockopen函数 的影响
  7. 开发经验分享_03_解决问题3步走(思路)
  8. HTML5在手机端实现视频全屏展示
  9. PNG免抠古风纹理背景太漂亮了,直接应用的才是好素材
  10. Java Spring-注解进行属性注入
  11. 每天一个linux命令(59):rcp命令
  12. 新一代 FlinkSQL 平台,重新定义 Apache Flink 开发
  13. java定时任务插件_jfinal定时调度任务插件QuartzPlugin
  14. c语言如何生成csv文件格式,生成 csv 文件
  15. 神舟战神g8r9和g9r9区别对比评测选哪个好
  16. Java中将String类型依照某个字符分割成数组
  17. 【QQ农场两周年】回想我的农场
  18. 关于AI输电线路在线监测多目4G摄像头低功耗解决方案
  19. ISTQB基础级备考攻略
  20. python 模拟登录获取cookie_Python获取新浪微博cookie模拟登录

热门文章

  1. 每日英语:Electronics Develop A Sixth Sense
  2. SQL查询语句精华 笔记
  3. Ubuntu18.04关闭ibus-daemon自启动
  4. Linux ALSA DAPM 调试工具
  5. git reset --hard命令小结
  6. SpringBoot之idea打包以及启动jar包
  7. mysql longbolb_MySql基本数据类型及约束
  8. 如何远程登录连接Linux云服务器(电脑端/移动端)?
  9. hook监控限制_**CodeIgniter通过hook的方式实现简单的权限控制
  10. 不同网段的直连怎么互通_什么样的网络能互通,什么样的网络不能互通?