检查性异常和非检查性异常最主要的区别在于其处理异常的方式:检查性异常必须使用try catch或者throws等关键字进行处理,否则编译器会报错;非检查性异常一般是程序代码写的不够严谨而导致的问题,可以通过修改代码来规避。所有的检查性异常都继承自java.lang.Exception;所有的非检查性异常都继承java.lang.RuntimeException。

1.检查型异常(Checked Exception)

所谓检查(Checked)是指编译器要检查这类异常,检查的目的一方面是因为该类异常的发生难以避免,另一方面就是让开发者去解决掉这类异常,所以称为必须处理(try ...catch)的异常。如果不处理这类异常,集成开发环境中的编译器一般会给出错误提示。

常见的检查性异常:输入输出异常(IOException)、文件不存在异常(FileNotFoundException)、SQL语句异常(SQLException)等

例如:一个读取文件的方法代码逻辑没有错误,但程序运行时可能会因为文件找不到而抛出FileNotFoundException,如果不处理这些异常,程序将来肯定会出错。所以编译器会提示你要去捕获并处理这种可能发生的异常,不处理就不能通过编译。

2.非检查型异常(Unchecked Exception)

所谓非检查(Unchecked)是指编译器不会检查这类异常,不检查的则开发者在代码的编辑编译阶段就不是必须处理,这类异常一般可以避免,因此无需处理(try ...catch)。如果不处理这类异常,集成开发环境中的编译器也不会给出错误提示。

常见的运行时异常:空指针异常(NullPointerException)、除零异常(ArithmeticException)、数组越界异常(ArrayIndexOutOfBoundsException)等;

例如:你的程序逻辑本身有问题,比如数组越界、访问null对象,这种错误你自己是可以避免的。编译器不会强制你检查这种异常。

常见的NullPointException,ClassCastException是常见的非检查型异常。

检查型异常有哪些java_JAVA系列之检查型异常与非检查型异常的详解相关推荐

  1. 【备战春招/秋招系列】美团Java面经总结终结篇 (附详解答案)

    该文已加入开源项目:JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识的文档类项目,Star 数接近 14 k).地址:https://github.com/Snailclimb.. ...

  2. 【备战春招/秋招系列】美团Java面经总结终结篇 (附详解答案) 1

    该文已加入开源项目:JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识的文档类项目,Star 数接近 14 k).地址:https://github.com/Snailclimb/J ...

  3. 【备战春招/秋招系列】美团Java面经总结进阶篇 (附详解答案)

    <!-- MarkdownTOC --> 一 消息队列MQ的套路 1.1 介绍一下消息队列MQ的应用场景/使用消息队列的好处 ①.通过异步处理提高系统性能 ②.降低系统耦合性 1.2 那么 ...

  4. (转)C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

    原文链接:https://www.cnblogs.com/landeanfen/p/5501487.html 阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T ...

  5. 【5年Android从零复盘系列之二十】Android自定义View(15):Matrix详解(图文)【转载】

    [转载]本文转载自麻花儿wt 的文章<android matrix 最全方法详解与进阶(完整篇)> [5年Android从零复盘系列之二十]Android自定义View(15):Matri ...

  6. 三菱FX5U系列PLC之间进行UDP以太网通信的具体方法示例详解(二)

    三菱FX5U系列PLC之间进行UDP以太网通信的具体方法示例详解(二) 假设有A.B两个FX5U系列的PLC要进行UDP以太网通信,进行数据交互. 上次和大家分享了两台FX5U系列PLC进行UDP以太 ...

  7. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

  8. ceph命令系列(一):ceph-deploy/ceph/rados/rbd 常用命令详解

    ceph-deploy 常用命令详解 命令 描述 ceph-deploy new [mon-node ...] 指定node(s)为monitor,开始部署一个新的ceph集群,并且在当前目录创建ce ...

  9. 【外行也能看懂的RabbitMQ系列(二)】—— RabbitMQ的Web管理界面(rabbitmq_management)详解(内含Topic模式通配符实操)

    系列文章目录 准备篇 RabbitMQ安装文档 第一章 RabbitMQ快速入门篇 第二章 RabbitMQ的Web管理界面详解 第三章 RabbitMQ进阶篇之死信队列 第四章 RabbitMQ进阶 ...

  10. 算法学习FFT系列(2):快速数论变换NTT bzoj3992: [SDOI2015]序列统计例题详解

    bzoj3992: [SDOI2015]序列统计 Description 小C有一个集合S,里面的元素都是小于M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数列中的每个数都属 ...

最新文章

  1. atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js
  2. VForum 2008系列之三:分论坛视频-实现自动化的虚拟数据中心
  3. maven报错解决: -source 1.5 中不支持 diamond 运算符
  4. 如何为 SQL Server 2000 分发和安装 SQL-DMO(引用)
  5. 我的Java开发学习之旅------Java ClassLoader解析一(转)
  6. 基于stm32单片机智能温控风扇控制系统Proteus仿真(源码+仿真+全套资料)
  7. GetClientRect、ScreenToClient、GetWindowRect、ClientToScreen、MoveWindow用法总结
  8. 怎么修改数据库服务器名字,修改SQL Server数据库服务器名字
  9. 大雁牌计算机在线使用,用大雁牌计算器解决有关计算问题
  10. 计算机视觉(二)-matlab之理想低通滤波器,布特沃斯低通、高斯低通,理想高通、布特沃斯高通、高斯高通滤波器
  11. 医学统计学中差异性检验的检验方法选择
  12. C++实现动态烟花,噼里啪啦过新年啦
  13. Revit 命令添加下拉框
  14. 企业ERP管理软件有哪些?哪个好
  15. 关于mail mailx 以及sendmail 的理解
  16. 银行借ApplePay反攻 七方利益分润未解
  17. 简谐振动|Python绘制拍与李萨如图形
  18. Feathers基础知识
  19. MacOS High Sierra 12 13系统转dmg格式
  20. 无法初始化设备 prn

热门文章

  1. 小米手机 root权限 获取
  2. DotNet 资源大全(转)
  3. 需要一款管理链接的软件
  4. Win10计算机默认排序,win10系统文件夹自动排列怎么取消?win10文件夹不自动排列设置方法...
  5. 【学习笔记】seckill-秒杀项目--(6)秒杀功能
  6. 一文了解CSP、NOIP、NOI 三大信息学赛事
  7. 深圳礼品展1688再度强强联手,30万平超级大展10月震撼来袭!
  8. 训练误差和泛化误差、K折交叉验证
  9. 【随笔】Java团长
  10. PHPstorm设置字体大小