java Error和Exception的异同介绍

KLQ 2020-08-31 14:51:20 java常见问答 8687

下面要给大家详细的介绍的就是Error和Exception,主要讲到的就是Error和Exception的异同,下面就一起通过简单的文章内容来进行一下了解吧。

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

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

Exception是程序正常运行过程中可以预料到的意外情况,并且应该被开发者捕获,进行相应的处理;

Error是指正常情况下不大可能出现的情况,绝大部分的Error都会导致程序处于非正常、不可恢复状态,所以不需要被开发者捕获;

Error错误是任何处理技术都无法恢复的情况,肯定会导致程序非正常终止,并且Error错误属于未检查类型,大多数发生在运行的时候;

Exception又分为可检查(checked)异常和不检查(unchecked)异常。

可检查异常在源码里必须显示的进行捕获处理,这里是编译期检查的一部分;

不检查异常就是所谓的运行时异常,通常是可以编码避免的逻辑错误,具体根据需要来判断是否需要捕获,并不会在编译器强制要求;

下面是比较常见的Error和Exception:

运行时异常(RuntimeException)

非运行时异常

错误(Error)

示例:

下面的代码会导致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.StackOverflowError
    at 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错误。

以上就是对于java Error和Exception的异同简单介绍了,你都了解了吗?请继续关注奇Q工具网吧,更多java基础知识,可以为你分享呢。

推荐阅读:

java异常(Exception),异常简介

java异常(Exception),异常类型