昨天阿里面试官问了我这个问题,当时有点蒙。可能对于这两个词不太敏感吧,没答上来。当时如果面试官问错误类型有哪几种就能答上来了。还是自己太菜了,对很多知识掌握不够牢固。

异常总览

在java中,异常分为两种,运行时异常(也就是uncheckException)和已检查异常checkException,运行时异常包括平常遇到的各种异常,如空指针异常,数据格式异常等一系列异常,这种异常是可以不捕获的,可通过throws抛出异常,交给别的代码或者JAVA虚拟机来完成。但checkException是必须要处理的,也就是不能抛出,必须通过try-catch来完成,不处理的话是不能进行编译的。但是checkException不是一个具体的异常类型,它只是一个概念。所以你判断一个异常是已检查异常还是未检查异常,只需要通过抛出这个异常就可以知道了。
其中RuntimeException +Error 和其子类都是属于 uncheckexception,Exception类中除了 RuntimeException之外的类 都是属于 checkexception。

Error类
Error是系统中的错误,程序员是不能通过代码进行逻辑捕获的,这个错误是在程序编译时出现的,只能通过修改代码才能改正。属于uncheckedException。
如:内存空间不足,方法调用栈溢等。

受检异常(checkedException)
除去RuntimeException和Error外的异常都属于受检异常,该异常需要强制处理(throws给方法调用者,或者在发生的方法中try/catch掉)。

常见受检异常如下:
Java.lang.ClassNotFoundException --找不到类异常
Java.lang.CloneNotSupportedException --clone异常-未实现Cloneable接口
Java.lang.IOException --IO流异常
Java.lang.SqlException --sql异常
Java.lang.IllegalAccessException --访问权限异常-private
Java.lang.DataFormatException --数据格式化异常
Java.lang.NoSuchFieldException --反射异常
Java.lang.NoSuchMethodException --方法未找到异常

非受检异常(uncheckedException)
RuntimeException是所有非受检异常类的基类,即所有非受检异常继承自该类。该类异常不强制处理,但通常开发人员为了代码健全会进行封装处理,该异常发生的原因也通常是程序员对逻辑的考虑不周而出现的。

常见非受检异常如下:
Java.lang.ClassCastException --类型转换异常
Java.lang.NumberFormatException --数字转换异常
Java.lang.NullPointerException --空指针异常
Java.lang.IndexOutOfBoundsException --索引越界异常
Java.lang.ArrayIndexOutOfBoundsException --数组下标越界异常
Java.lang.StringIndexOutOfBoundsException --字符串截取下标越界异常
Java.lang.NegativeArraySizeException --数组大小为负数异常
Java.lang.ArithmeticException --算术异常
Java.lang.ArrayStoreException --数组元素不匹配异常
Java.lang.EnumConstantNotPresentException --枚举常量不存在异常
Java.lang.IllegalArgumentException --非法参数异常
Java.lang.IllegalThreadStateException --线程异常
Java.lang.IllegalMonitorStateException --违法的监控状态异常
Java.lang.TypeNotPresentException --类型不存在异常

CheckException和UnCheckException的区别相关推荐

  1. java runtimeexception check_CheckException和RuntimeException

    java文档中对RuntimeException的定义是: RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类. 可能在执行方法期间抛出但未被捕获的 Runt ...

  2. 找工作要复习的那些点

    2021年离职计划:30岁之前,还是期望在大厂工作,期望薪资是50万/年.涨幅在30%,工作地点在杭州/上海 时间 动作 2021:02:01 2021:02:01~~2021:02:20 todo: ...

  3. check在java意思吗_谈谈Java:Checked Exception与 unCheckException Runtime Exception 的区别...

    Java里有个很重要的特色是Exception ,也就是说允许程序产生例外状况.而在学Java 的时候,我们也只知道Exception 的写法,却未必真能了解不同种类的Exception 的区别. 首 ...

  4. 编译时异常和运行时异常区别

    文章目录 1.编译时异常因为什么而得名 2.编译时异常和运行时异常区别 3.编译时异常还有其他名字 4.运行时异常还有其他名字 5.所有异常都发生在运行阶段的 1.编译时异常因为什么而得名 编译时异常 ...

  5. RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别

    1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...

  6. C++ 笔记(28)— C++ 中 NULL和 nullptr 的区别

    最近看公司代码的时候发现在判断指针是否为空的时候,有的时候用的是 NULL, 有的时候用的是 nullptr 感觉很奇怪,好奇心驱使我查了下两者的区别,发现还是有很多细节需要学习的. 1. NULL ...

  7. gcc 和 g++ 的联系和区别,使用 gcc 编译 c++

    GCC 编译器已经为我们提供了调用它的接口,对于 C 语言或者 C++ 程序,可以通过执行 gcc 或者 g++ 指令来调用 GCC 编译器. 实际使用中我们更习惯使用 gcc 指令编译 C 语言程序 ...

  8. Python2 与 Python3 区别

    Python2.x 与 Python3.x 区别 1. print 函数 Python2 中 print 是语句(statement),Python3 中 print 则变成了函数.在 Python3 ...

  9. Docker 入门系列(1)- 初识容器,镜像、容器、仓库的区别

    Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发 ...

  10. HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)

    TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...

最新文章

  1. MATLAB【六】 ———— matlab 随机散斑模拟
  2. 关于swing的一些看法
  3. sql server 数据库模型 备份 恢复 总结 备份脚本
  4. 企业级 SpringBoot 教程 (二十三)异步方法
  5. 程序设计竞赛(数组+多组测试)
  6. 串口读写flash_老司机带路:LPC82x 存储器及读写保护 手到擒来!
  7. async-http java_使用Java和async-http-client通过基本身份验证获取URL内容 - java
  8. PLSQL_数据泵导入导出数据Impdp/ Expdp(概念)
  9. php能连接动易吗,动易CMS数据转成dedecms的php程序
  10. 中文文本分类:你需要了解的10项关键内容
  11. 并发性(concurrency)和并行性(parallel)区别
  12. 面试题之请描述一下Java类加载过程
  13. OpenV$P$N服务器添加客户端
  14. win10资源管理器打开缓慢,自动搜索
  15. 【发际线大作战】C++学习记录之循环语句(发际线-1cm)
  16. 南华大学计算机全国排名多少位,华南理工大学全国排名第几位
  17. 证监会拟将QFII、RQFII两项制度合二为一
  18. 使用公众号快速申请小程序的流程
  19. abc237 D(想了一个小时结果跟模拟双向链表的插入一毛一样,老废物了,思路不清晰,建议remake)
  20. freescale imx6最新版本bsp在天嵌imx6q开发板的移值

热门文章

  1. delphi xe 10 程式外观
  2. duble 和 float 小数的位数
  3. Rust语言教程(6) - 错误处理和可选值
  4. java8--Lambda表达式
  5. 批量生成小说人物名字
  6. git 解决合并冲突
  7. Vue/ElementUI上传文件检验
  8. Flutter 与 Compose 应该怎么选择?它们冲突吗?
  9. uni-app开发之编辑器HBuilderX(一)
  10. 评职称自费出书多少钱