Error(错误)Exception(异常)都是 java.lang.Throwable 类的子类,在 Java 代码中只有继承了 Throwable 类的实例才能被 throw 或者 catch。

Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类,

  • Exception 是程序正常运行过程中可以预料到的意外情况,并且应该被开发者捕获,进行相应的处理。
  • Error 是指正常情况下不大可能出现的情况,绝大部分的 Error 都会导致程序处于非正常、不可恢复状态。所以不需要被开发者捕获。
  • Error 错误是任何处理技术都无法恢复的情况,肯定会导致程序非正常终止。并且 Error 错误属于未检查类型,大多数发生在运行时。
  • Exception又分为可检查(checked)异常和不检查(unchecked)异常,可检查异常在源码里必须显示的进行捕获处理,这里是编译期检查的一部分。不检查异常就是所谓的运行时异常,通常是可以编码避免的逻辑错误,具体根据需要来判断是否需要捕获,并不会在编译器强制要求。

如下是常见的 Error 和 Exception:

1)运行时异常(RuntimeException):

  • NullPropagation:空指针异常;
  • ClassCastException:类型强制转换异常
  • IllegalArgumentException:传递非法参数异常
  • IndexOutOfBoundsException:下标越界异常
  • NumberFormatException:数字格式异常

2)非运行时异常:

  • ClassNotFoundException:找不到指定 class 的异常
  • IOException:IO 操作异常

3)错误(Error):

  • NoClassDefFoundError:找不到 class 定义异常
  • StackOverflowError:深递归导致栈被耗尽而抛出的异常
  • OutOfMemoryError:内存溢出异常

例 1
下面代码会导致 Java 堆栈溢出错误。

/ 通过无限递归演示堆栈溢出错误
class StackOverflow {public static void test(int i) {if (i == 0) {return;} else {test(i++);}}
}
public class ErrorEg {public static void main(String[] args) {// 执行StackOverflow方法StackOverflow.test(5);}
}

运行输出为:

Exception in thread "main" java.lang.StackOverflowErrorat ch11.StackOverflow.test(ErrorEg.java:9)at ch11.StackOverflow.test(ErrorEg.java:9)at ch11.StackOverflow.test(ErrorEg.java:9)at ch11.StackOverflow.test(ErrorEg.java:9)

上面代码通过无限递归调用最终引发了 java.lang.StackOverflowError 错误。

1.3 Error和Exception的异同相关推荐

  1. Java中Error和Exception的异同

    Error(错误)和 Exception(异常)都是 java.lang.Throwable 类的子类,在 Java 代码中只有继承了 Throwable 类的实例才能被 throw 或者 catch ...

  2. Java中的Error和Exceptiond的异同点

    Error和Exception的异同点: (1)Error类和Exception类都继承超类Java.lang.Throwable (2)Error:一般指与虚拟机相关的问题,如系统崩溃,内存溢出等. ...

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

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

  4. Java的异常:Error与Exception

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

  5. Throwable、Error、Exception、RuntimeException 区别 联系

    2019独角兽企业重金招聘Python工程师标准>>> 1.Throwable 类是 Java 语言中所有错误或异常的超类.它的两个子类是Error和Exception: 2.Err ...

  6. 常见的 Error 和 Exception

    如下是常见的 Error 和 Exception: 1)运行时异常(RuntimeException)也称 [非检查型异常 UncheckedException]: Nullpointer Excep ...

  7. Error和Exception(异常)

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

  8. [安卓】Error和Exception的区别

    Error和Exception的区别: Error:错误,一般是指程序或者虚拟机之类产生的无法依靠修改代码能够解决的问题,例如虚拟机无法正常运行等等. 典型的两个Error 1) OutofMemor ...

  9. JDK源码(14)-Error、Exception

    一.概述 前面讲了Throwable,而Error和Exception都是Throwable的子类,Error代表出现的是严重错误,应用程序不应该用trycatch去捕获并且进行处理.绝大多数的Err ...

最新文章

  1. [bzoj1477]青蛙的约会
  2. 【字符串操作之】返回指定位置的字符和Unicode 字符代码 根据unicode返回字符→→charAt、charCodeAt和fromCharCode...
  3. SQL删除重复数据方法
  4. 录屏 模拟器_Scrcpy-在电脑无缝操作手机 (投屏/录屏/免Root)
  5. 进虚拟ftp服务器跳网页,ftp服务器总是自动跳到网页
  6. 【数据结构与算法】之深入解析“自由之路”的求解思路与算法示例
  7. OpenMV(二)--IDE安装与固件下载
  8. PHP Fatal error: Class 'com' not found in ... 的处理办法
  9. 三菱fx5u modbus tcp fb块用法_2020江苏三菱PLCFX3GA14MT回收回收上门提货西门子软启动器...
  10. MVC应用程序结构与规划
  11. Malmquist指数DEAP2.1应用
  12. java从以文件复制到另一文件_java将一个文件复制到另一个文件夹
  13. 合肥工业大学机器人足球仿真robcup作业一(python实现)附代码有注释
  14. 已删除的QQ好友聊天记录怎么查看
  15. 2017年微软暑期实习PM产品经理面经
  16. 第二十章 幻读是什么,幻读有什么问题?
  17. centos7用html5播放器,centos7安装多媒体播放器SMPlayer
  18. 叛逆连队2怎么自建服务器,《战地:叛逆连队2》目前暂不支持第三方服务器
  19. Welcome To Java!
  20. 第1讲 几种密码技术的简要介绍——《图解密码技术》

热门文章

  1. 3dmax2014:打开3dmax2014软件时,出现许可证检出失败 错误20
  2. 风控业务中的信用与欺诈的定义区别
  3. 用MYSQL的存储过程创建百万级测试数据表
  4. Springboot 连接数据库
  5. Python基础之最大公约数与最小公倍数
  6. webstorm基础使用总结
  7. OSX操作技巧:快速锁定系统(类似Windows+L)
  8. form中onsubmit的使用
  9. 将Sublime Text 2搭建成一个好用的IDE
  10. [导入]DotNet软件开发框架