博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java Exception和Error的区别
阅读量:4669 次
发布时间:2019-06-09

本文共 2426 字,大约阅读时间需要 8 分钟。

Exception 子类下面的另一部分子类对应于Java程序中的非运行时异常的处理,这些异常也称为显式异常。它们都是在程序中用语句抛出、并且也是用语句进行捕获的,比如,文件没找到引起的异常、类没找到引起的异常等。

常见的异常有:

  • ArithmeticException——由于除数为0引起的异常;

  • ArrayStoreException——由于数组存储空间不够引起的异常;

  • ClassCastException—一当把一个对象归为某个类,但实际上此对象并不是由这个类 创建的,也不是其子类创建的,则会引起异常;

  • IllegalMonitorStateException——监控器状态出错引起的异常;

  • NegativeArraySizeException—一数组长度是负数,则产生异常;

  • NullPointerException—一程序试图访问一个空的数组中的元素或访问空的对象中的 方法或变量时产生异常;

  • OutofMemoryException——用new语句创建对象时,如系统无法为其分配内存空 间则产生异常;

  • SecurityException——由于访问了不应访问的指针,使安全性出问题而引起异常;

  • IndexOutOfBoundsExcention——由于数组下标越界或字符串访问越界引起异常;

  • IOException——由于文件未找到、未打开或者I/O操作不能进行而引起异常;

  • ClassNotFoundException——未找到指定名字的类或接口引起异常;

  • CloneNotSupportedException——一程序中的一个对象引用Object类的clone方法,但 此对象并没有连接Cloneable接口,从而引起异常;

  • InterruptedException—一当一个线程处于等待状态时,另一个线程中断此线程,从 而引起异常,有关线程的内容,将在下一章讲述;

  • NoSuchMethodException一所调用的方法未找到,引起异常;

  • Illega1AccessExcePtion—一试图访问一个非public方法;

  • StringIndexOutOfBoundsException——访问字符串序号越界,引起异常;

  • ArrayIdexOutOfBoundsException—一访问数组元素下标越界,引起异常;

  • NumberFormatException——字符的UTF代码数据格式有错引起异常;

  • IllegalThreadException—一线程调用某个方法而所处状态不适当,引起异常;

  • FileNotFoundException——未找到指定文件引起异常;

  • EOFException——未完成输入操作即遇文件结束引起异常。

  •  

 

rror类和Exception类的父类都是throwable类,他们的区别是:

Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。

 

Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。

 

Exception类又分为运行时异常(Runtime Exception)和受检查的异常(Checked Exception ),运行时异常;ArithmaticException,IllegalArgumentException,编译能通过,但是一运行就终止了,程序不会处理运行时异常,出现这类异常,程序会终止。而受检查的异常,要么用try。。。catch捕获,要么用throws字句声明抛出,交给它的父类处理,否则编译不会通过。

error都是继承自父类Java.lang.Error,而exception都继承自java.lang.Exception.

再看看JDK中对于java.lang.Error和java.lang.Exception的解释。

      java.lang.Error: An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch. Most such errors are abnormal conditions.

 即:Error是Throwable的子类,用于标记严重错误。合理的应用程序不应该去try/catch这种错误。绝大多数的错误都是非正常的,就根本不该出现的。 java.lang.Exception: The class Exception and its subclasses are a form of Throwable that indicates conditions that a reasonable application might want to catch. 即Exception 是Throwable的一种形式的子类,用于指示一种合理的程序想去catch的条件。即它仅仅是一种程序运行条件,而非严重错误,并且鼓励用户程序去catch它。Error和RuntimeException 及其子类都是未检查的异常(unchecked exceptions),而所有其他的Exception类都是检查了的异常(checked exceptions).

checked exceptions: 通常是从一个可以恢复的程序中抛出来的,并且最好能够从这种异常中使用程序恢复。比如FileNotFoundException, ParseException等

 

转载于:https://www.cnblogs.com/fly0512/p/9874839.html

你可能感兴趣的文章
利用AutoSPSourceBuilder和Autospinstaller自动安装SharePoint Server 2013图解教程——Part 1...
查看>>
ZOJ-2972-Hurdles of 110m(记忆化搜索)
查看>>
一些新了解到技术
查看>>
vue.js click点击事件获取当前元素对象
查看>>
【单调栈,单调队列】总结
查看>>
LeetCode:Gas Station
查看>>
MyBatis初识(通过小实例清晰认识MyBatis)
查看>>
面对最菜TI战队,OpenAI在Dota2上输的毫无还手之力
查看>>
XCODE快捷键和功能汇总篇(不断更新)
查看>>
Servlet开发(一)
查看>>
linux下如何查看某个容器的详细信息?
查看>>
bzoj 2843: 极地旅行社
查看>>
车林通购车之家--购车计算器模块--算法js
查看>>
webpack使用教程
查看>>
MySQL学习8 - 数据的增删改
查看>>
Linux笔记(开机自动将kerne log保存到SD卡中)
查看>>
Ajax提交数据判断员工编号是否存在,及自动填充与员工编号所对应的员工姓名。...
查看>>
CodeForces 689E (离散化+逆元+组合)
查看>>
pycharm 右键无法显示unittest框架&&解决右键只有unittest 运行如何取消右键显示进行普通run...
查看>>
jQuery的选择器
查看>>