什么是异常?

  • 实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求,你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等。我们的程序在跑着,内存或硬盘可能满了。等等。

  • 软件程序在运行过程中,非常可能遇到刚刚提到的这些异常问题,我们叫异常,英文是:Exception,意思是例外。这些,例外情况,或者叫异常,怎么让我们写的程序作出合理的处理。而不至于程序崩溃。

  • 异常指程序运行中出现的不期而至的各种情况,如:文件找不到,网络连接失败,非法参数等。

  • 异常发生在程序运行期间,它影响了正常的程序执行流程。

  package com.exception;public class Demo01 {public static void main(String[] args) {new Demo01().a();}public void a(){b();}public void b(){a();}}

由于两个函数之间会一直递归调用对方会导致栈内存空间溢出而报错但这是一种Error为:java.lang.StackOverflowError为栈溢出错误。

  package com.exception;public class Demo01 {public static void main(String[] args) {System.out.println(11/0);}}

由于被除数不能为0,将会报出异常问题:java.lang.ArithmeticException: / by zero

简单的分类

  • 要理解Java异常处理是如何工作的,你需要掌握以下三种类型的异常:

  • 异常处理框架:为针对异常的一个异常体系结构

  • 检查性异常:最具代表性的是用户(输入)错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能简单地忽略。

  • 运行时异常:这是可能被程序员忽略的异常。与检查性异常相反运行时异常可以在编译时被忽略。

  • 错误(Error):错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译时也是检查不到的。

异常体系结构:

  • Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。

  • 在Java API中已经定义了许多超类,这些异常类分为两大类,错误Error(比较严重要尽量去避免也易于避免)和异常Exception

Error

  • Error类对象由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。

  • Java虚拟机运行错误(Virtual MachineError),当JVM不再有继续执行操作所需的内存资源时,将出现OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止以免造成更大损失。

  • 还有发生在虚拟机试图执行应用时,如类定义错误(NoClassDefFoundError),链接错误(LinkageError)。这些错误是不可查的,因为它们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的状况。

Exception(如果不处理程序可能编译不通过)

  • 在Exception分支中有一个重要的子类RuntimeException(运行时异常)除此之外的Exception均可成为非运行时异常。

    • ArrayIndexOutOfBoundException(数组下标越界)

    • NullPointerException(空指针异常)

    • AirthmeticException(算术异常)

    • MissingResourceException(丢失资源)

    • ClassNotFoundException(找不到类)等异常,这些异常时不检查异常,程序中可以选择捕获处理,也可以不处理。

    • Illegalagumentexception为非法的参数异常

    • UnkownTypeException为未知种类的异常

  • IoException为Exception分支中另一个分支表示IO异常情况

    • EOFException表示输入过程中意外地到大文件尾或流尾的信号,导致异常,其实为正常的,只是告诉你,应该把使用流的对象都关闭一下。

    • FileNotFoundException文件找不到异常。

OutOfMemoryError为堆内存溢出错误,StackOverFlowError表示栈内存溢出错误。

  • 这些异常一般是由程序逻辑错误(程序员自身问题)引起的,程序应该从逻辑角度尽可能避免这类异常的发生;

  • Error和Exception的区别:Error通常是灾难级的致命的错误,是程序无法控制和处理的,当出现这类异常时,Java虚拟机(JVM)一般会选择终止进程;Exception通常情况下是可以被程序处理的,并且在程序中应该尽可能的去处理这些异常

Error与Exception的异常定义以及简介(简单理解介绍是为了下一节的异常处理与捕捉)相关推荐

  1. Error和Exception(异常)

    Error和Exception(异常) 掌握以下三种类型的异常: 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的.例如打开一个不存在文件时,一个异常就发生了,这些异常 ...

  2. 信息熵(entropy)定义公式的简单理解

    首先公式长这样: H ( X ) = − ∑ i = 1 n p ( x i ) log ⁡ p ( x i ) H(X)=-\sum_{i=1}^{n} p\left(x_{i}\right) \l ...

  3. java exception源码_Java异常之 Error 和 Exception

    简单了解 Java 异常 1.实际工作中,遇到的情况不可能是非常完美的. 比如:你写的某个模块,用户输入不一定符合你的要求: 你的程序要打开某个文件,这个文件可能不存在或者文件格式不对: 你要读取数据 ...

  4. Java异常之 Error 和 Exception

    简单了解 Java 异常 1.实际工作中,遇到的情况不可能是非常完美的. 比如:你写的某个模块,用户输入不一定符合你的要求: 你的程序要打开某个文件,这个文件可能不存在或者文件格式不对: 你要读取数据 ...

  5. 异常Error和Exception

    异常 Error和Exception 程序在运行过程中很可能遇到一些意外,即错误Error和异常Exception 异常指程序运行中出现的不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等 ...

  6. Exception(异常) 和 Error(错误)区别解析

    Exception和Error都来自共同的祖先 -- java.lang 包中的 Throwable 类. Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题. 大多数错误与代码编 ...

  7. Java的异常:Error与Exception

    Java的异常:Error与Exception 参考文章: (1)Java的异常:Error与Exception (2)https://www.cnblogs.com/heqiyoujing/p/11 ...

  8. java异常中的Error和Exception的区别是什么?

    java异常中的Error和Exception的区别是什么? 参考文章: (1)java异常中的Error和Exception的区别是什么? (2)https://www.cnblogs.com/Tr ...

  9. java异常体系_Java异常体系(Throwable、Error、Exception)

    Java异常体系 java异常体系继承图 Throwable Throwable类是所有异常的父类,常见的子类有两个Error.Exception. Error Error类就是程序运行时候抛出的最严 ...

最新文章

  1. tensorflow 1.0 学习:十图详解tensorflow数据读取机制
  2. 4G EPS 中的消息类型
  3. 【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | ActivityThread 源码分析 )
  4. sql 定时同步两个数据库
  5. Entity Framework Relationships and Navigation Properties
  6. 字节跳动python面试_字节跳动的面试感受
  7. Hibernate的generator属性
  8. Hadoop、storm和Spark的区别、比较
  9. 杭电1231最大连续子序列
  10. Element UI 中table的验证
  11. ip查询js获取页面属性
  12. SQL中GROUP BY用法示例
  13. C语言程序设计基础学习笔记简介
  14. 矢量字体合并《注意事项》
  15. 别再用手机管家了!华为手机删除这几个文件夹,能瞬间释放大量内存
  16. Python实现二维码生成器
  17. 《大腕》经典对白 模仿秀(转贴)
  18. php 时区对应的地区,PHP 输出的各个时区对应的时差表
  19. 【计组】懂了,时钟周期、机器周期、指令周期、总线周期、存储周期。
  20. python解压文件中哪个是安装包_python解压文件格式的基本方法

热门文章

  1. C语言获取SYSTEMTIME
  2. 徐州php溪谷_ThinkPHP溪谷H5游戏平台系统V3.0完整版源码
  3. tipask二次开发总结_tipask二次开发总结
  4. 原生js+css3实现点击图片正方体旋转展现图片
  5. 2022年化工自动化控制仪表考试总结及化工自动化控制仪表模拟考试
  6. SpringCloud详细教程(上)
  7. iOS内测平台fir.im,发布内测版本
  8. 基于CentOS7操作cobbler批量装机-(centos7和redhat8)
  9. 前端非框架类知识点汇总
  10. 基于java后端的 krpano 功能化