java中错误(error)和异常(exception)有啥主要区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中错误(error)和异常(exception)有啥主要区别?相关的知识,希望对你有一定的参考价值。
Error类和Exception类的父类都是throwable类,他们的区别是:Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。
Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。
Exception类又分为运行时异常(Runtime Exception)和受检查的异常(Checked Exception ),运行时异常;ArithmaticException,IllegalArgumentException,编译能通过,但是一运行就终止了,程序不会处理运行时异常,出现这类异常,程序会终止。而受检查的异常,要么用try。。。catch捕获,要么用throws字句声明抛出,交给它的父类处理,否则编译不会通过。
常见的异常;
ArrayIndexOutOfBoundsException 数组下标越界异常,
ArithmaticException 算数异常 如除数为零
NullPointerException 空指针异常
IllegalArgumentException 不合法参数异常 参考技术A 它们两个是Throwable的两个分支
error指的是错误,通常是程序员不可能通过代码来解决的问题,底层环境或者硬件的问题。
exception指的是异常,或者理解为程序运行过程中出现的意外情况 参考技术B error代表致命的错误 这个不是个人能处理的了得所以你也管不了
exception 是一些人为的错误比如 数组下标越界什么的 还有无法掌握的错误 比如读取文件的时候这个文件不存在 需要连接网络的时候网络不同之类 参考技术C error代表致命的错误 这个不是个人能处理的了得所以你也管不了
exception 是一些人为的错误比如 数组下标越界什么的 还有无法掌握的错误 比如读取文件的时候这个文件不存在 需要连接网络的时候网络不同之类 参考技术D Error是jvm进行处理,是jvm出错
exception是可以由程序处理的,可以用try-catch捕获的
Java异常机制
- Java把异常作为一种类,当做对象来处理。所有异常类的基类是Throwable类。两大子类分别是Error和Exception。这些异常类可以分为三种类型:错误、受检异常、运行时异常。
- 错误由JVM抛出,用Error类表示。Error类描述的是内部的系统错误,例如Java虚拟机崩溃、内存溢出等。这种情况仅凭程序自身是无法处理的,在程序中也不会对Error异常进行捕捉和抛出。
- 异常(Exception)又分为RuntimeException(运行时异常)和CheckedException(受检异常),两者区别如下:
- RuntimeException:程序运行过程中才出现和被检查出来的错误。例如:类型错误转换,数组下标访问越界,空指针异常、找不到指定类等等。
- CheckedException:来自于Exception且非运行时异常都是检查异常,编译器会强制检查并通过try-catch块来对其捕获,或者在方法头声明该异常进一步交给调用者处理。
- 两种异常的处理方式:若是运行时异常,则表明程序出错,应该找到错误并修改,而不是对其捕获。若是检查异常,遵循该原则:谁知情谁处理,谁负责谁处理,谁导致谁处理。处理就是对其先捕获后做具体的本地化处理。
以上是关于java中错误(error)和异常(exception)有啥主要区别?的主要内容,如果未能解决你的问题,请参考以下文章
Error creating bean with name xxx Factory method ‘sqlSessionFactory‘ threw exception; nested excepti
java中错误(error)和异常(exception)有啥主要区别?