java面试题之Error和Exception的区别

导读:本篇文章讲解 java面试题之Error和Exception的区别,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Error与Exception的区别
(1)Error类和Exception类都是继承Throwable类
(2)Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。
(3)Exception(异常)表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。

Exception又分为两类:
CheckedException:(编译时异常) 需要用try——catch显示的捕获,对于可恢复的异常使用CheckedException。
UnCheckedException(RuntimeException):(运行时异常)不需要捕获,对于程序错误(不可恢复)的异常使用RuntimeException。
常见的RuntimeException异常:
illegalArgumentException:此异常表明向方法传递了一个不合法或不正确的参数。
illegalStateException:在不合理或不正确时间内唤醒一方法时出现的异常信息。换句话说,即 Java 环境或 Java 应用不满足请求操作。
NullpointerException:空指针异常(我目前遇见的最多的)
IndexOutOfBoundsException:索引超出边界异常
————————————————

从概念角度分析:

Error:程序无法处理的系统错误,编译器不做检查;

Exception:程序可以处理的异常,捕获后可能恢复;

总结:前者是程序无法处理的错误,后者是可以处理的异常。

从责任角度分析:
Error: 属于JVM需要负担的责任;

Exception:
RuntimeException(非受检异常)是程序应该负担的责任;
Checked Exception (受检异常)可检查异常时Java编译器应该负担的责任。

常见Error和Exception

RuntimeException:

    1、NullPropagation:空指针异常;

  2、ClassCastException:类型强制转换异常

  3、IllegalArgumentException:传递非法参数异常

  4、IndexOutOfBoundsException:下标越界异常

  5、NumberFormatException:数字格式异常

非RuntimeException:

1、ClassNotFoundException:找不到指定class的异常

2、IOException:IO操作异常

Error:

1、NoClassDefFoundError:找不到class定义的异常

2、StackOverflowError:深递归导致栈被耗尽而抛出的异常

3、OutOfMemoryError:内存溢出异常

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/5754.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!