java把异常当做一个对象来处理,并定义了一个基类(java.lang.Throwable)作为所有异常得父类。在Java API中,已经定义了许多异常类,这些异常类分为Error(错误),和Exception(异常)两大类,如下图所示。

Error错误

Error表示程序在运行期间出现了非常严重的错误,并且该错误是不可恢复得,由于这属于JVM层次得严重错误,因此这种错误是会导致程序终止执行得。此外,编译器不会检查Error是否被处理,因此在程序中是不推荐去不获Error类型得异常,主要原因是运行时异常多是由于逻辑错误导致的,属于应该解决的错误,也就是说,一个正确的程序中是不应该存在Error得。OutOfMemoryError,ThreadDeath等都属于错误。当这些异常发生时,JVM一般会选择将线程终止。

OutOfMemoryError 参考https://blog.csdn.net/nisen6477/article/details/100018801

Exception 检查异常

所有继承自Exception并且不是运行时异常得异常都是检查异常。比如常见的IO异常和SQL异常。这种异常都发生在编译阶段,Java编译器强制程序去捕获此类型的异常,即把可能会出现这些异常得代码放到try块中,把对异常得处理得代码放到catch块中,这种一场一般都在如下几种情况中使用:

(1)异常的发生并不会导致程序出错,进行处理后可以继续执行后续的操作,例如:当连接数据库失败后,可以重新链接后进行后续操作。

(2)程序依赖于不可靠的外部条件,例如系统IO

RuntimeException 运行时异常

编译器没有强制对其进行捕获处理,如果不对这种异常进行处理,当出现这种异常时,会由JVM来处理,。运行时异常包括:NullPointerExceptiion,ClassCastException,ArrayIndexOutBoundsException,ArrayStoreException,BufferOverflowException,ArithmeticException等。

出现运行时异常后,系统会把异常一直往上层抛出,直到遇到处理代码为止。若没有处理代码块,则跑到最上层,如果是多线程就用Thread.run()方法抛出,如果是单线程,则用main()方法抛出。抛出后,如果是线程,那么这个线程也就推出了,如果是主程序抛出的异常,那么整个程序都退出了。所以如果不对运行时异常进行处理,后果是非常严重的,如果一旦发生了,要没事线程中止,要么是主程序终止。

还可以通过根据Javac对异常的处理要求,将异常类分为2类。

非检查异常(unckecked exception):

Error 和 RuntimeException 以及他们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。所以如果愿意,我们可以编写代码处理(使用try...catch...finally)这样的异常,也可以不处理。对于这些异常,我们应该修正代码,而不是去通过异常处理器处理 。这样的异常发生的原因多半是代码写的有问题。如除0错误ArithmeticException,错误的强制类型转换错误ClassCastException,数组索引越界ArrayIndexOutOfBoundsException,使用了空对象NullPointerException等等。

检查异常(checked exception):

除了Error 和 RuntimeException的其它异常。javac强制要求程序员为这样的异常做预备处理工作(使用try...catch...finally或者throws)。在方法中要么用try-catch语句捕获它并处理,要么用throws子句声明抛出它,否则编译不会通过。这样的异常一般是由程序的运行环境导致的。因为程序可能被运行在各种未知的环境下,而程序员无法干预用户如何使用他编写的程序,于是程序员就应该为这样的异常时刻准备着。如SQLException , IOException,ClassNotFoundException 等。

        最后看一下异常得结构图

参考:https://www.cnblogs.com/lulipro/p/7504267.html  Java程序员面试笔试宝典

JAVA-基础 -异常相关推荐

  1. Java基础-异常(Exception)处理

    Java基础-异常(Exception)处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.异常的概述 什么是异常?Java代码在运行时期发生的问题就是异常.在Java中,把异 ...

  2. Java基础-异常-throws Exception-抛声明

    Java基础-异常-throws Exception-抛声明 参考文章: (1)Java基础-异常-throws Exception-抛声明 (2)https://www.cnblogs.com/pl ...

  3. JAVA基础——异常详解

    阅读目录 一.异常简介 二.try-catch-finally语句 三.throw和throws关键字 四.java中的异常链 五.结束语 JAVA异常与异常处理详解 回到顶部 一.异常简介 什么是异 ...

  4. Java基础—异常分类及处理

    目录 一.概念 三.异常的处理方式 四.throw 和 throws 的区别: 一.概念 如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法.在这种情况下会抛出一个封装了错误信息的对 ...

  5. Java基础 — 异常

    异常对象都是派生于Throwable 类的一个实例. 异常层次结构简化示意图: 所有的异常都是由Throwable 继承而来,但在下一层立即分解为两个分支:Error 和 Exception Erro ...

  6. Java基础 —— 异常

    目录 异常的概念及分类 异常的处理try-catch-finally 异常抛出throw(s) 自定义异常 异常的概念及分类 什么是异常 异常是指在程序的运行过程中发生的一些不正常事件.比如:除0溢出 ...

  7. Java基础---异常---turow和throws

    异常 1.Throwable:可抛出的,是异常的顶层父类,其他的异常或者错误都是Throwable的子类类型,只有是Throwable的体系类型,才可以使用异常的处理机制 2.Error:错误,是Th ...

  8. 黑马程序员--java基础--异常(二)

    -------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iO ...

  9. Java基础-异常机制

    异常( Exception 也称例外)就是在程序的运行过程中所发生的不正常的事件,它会中 断正在运行的程序 所需文件找不到 网络连接不通或中断 算术运算错 (被零除-) 数组下标越界 装载一个不存在的 ...

  10. Java基础——异常

    异常(Exception) 基本概念 Java语言中,将程序执行中发生的不正常情况称为"异常".(开发过程中的语法错误和逻辑错误不是异常) 执行过程中所发生的异常事件可分为两大类: ...

最新文章

  1. 值得FS去的英雄副本
  2. 计算机相关概念总结(3)
  3. LINUX内核经典面试题30道及解答
  4. python中main的作用_浅析python 中__name__ = '__main__' 的作用
  5. alter table move与shrink space
  6. flutter 移动通知_Flutter开发之动画
  7. CheckBox复选框控件
  8. 数字日期格式转换yyyymmdd_Excel日期格式常用转换方法大全,关于日期函数
  9. 1024:为什么这些游戏这么火?
  10. 淘宝系一天交易额超52亿 电商光棍节疯狂吸金
  11. QT 科学计算器与谷歌拼音输入法实现
  12. PTA-链表学习-----奇数值结点链表
  13. NCRE-嵌入式系统开发工程师-操作系统知识整理
  14. Java Web小课程3——写servlet
  15. Python:计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整数
  16. Unity两点距离计算
  17. android OpenGL渲染3D模型文件
  18. 从零开始学习D2-Admin,只要学习,任何时候都不晚!
  19. 数学实验课MATLAB实验报告二(题目+代码)
  20. 【Android底层学习总结】1. 驱动开发基础

热门文章

  1. 【Git-7】阿里云Git仓库
  2. 笔记本计算机点管理点不开,电脑黑屏只有鼠标箭头任务管理器打不开 怎么解决...
  3. 分页计算总页数的算法
  4. 更改进程优先级c语言,进程优先级调整工具(Process Lasso Pro)64位
  5. Xamarin移动开发的优点和缺点
  6. Dapper入门教程
  7. 有人熟悉rsoft软件吗,可以交流交流。
  8. matlab矩阵乘法运算结果不对,矩阵里乘法使用错误?
  9. Kafka生产者消费者模型
  10. jQuery 事件 scroll() 方法的使用教程