概述
错误
该错误表示大多数情况是由于系统资源不足而发生的。系统崩溃和内存错误就是错误的例子。它主要发生在运行时。
- 错误是用户执行意外操作时产生的严重情况;
- 错误大多发生在编译时,如语法错误,但它也可能发生在运行时;
- 错误是由于编写代码时未考虑到的某些事件而导致用户输入者遇到某些意外情况时生成的事件。这可能是由于程序员的错误或某些高估或低估的情况造成的。例如。语法错误是由于程序员的粗心造成的编译时错误。
- 错误通常是不可逆转的,并且是由环境引起的
异常
异常是在运行时和编译时可能出现的问题。它主要出现在开发人员编写的代码或程序中。异常有两种类型:已检查异常和未检查异常。
- 异常是在程序执行期间发生的事件,它扰乱了程序执行的正常流程。
- 异常发生在运行时(可以在编译时检测到受检查的异常)。
- 异常是一种事件,它可以中断程序的当前流程(或指令)并改变其方向以保持程序正常运行,因为该事件可能会突然终止程序并可能导致整个系统崩溃。
- 异常可以通过特定的代码结构来预期、捕获和管理。
不受检查异常
Unchecked Exception在代码编译过程中,我们不用编写代码主动处理,程序也能正常编译通过。
RuntimeException及其子类我们都可以称为非受检查异常。
受检查异常
Error 和 Exception 都与 Throwable 具有相同的父类
以表格总结异常和错误的差异
Errors | Exceptions |
---|---|
错误表明问题主要是由于系统资源不足而发生的。 | 异常是在运行时和编译时可能出现的问题。 |
无法从错误中恢复。 | 可以从异常中恢复。 |
在java中,所有的错误都是未经检查的。 | 在java中,异常可以是检查的,也可以是非检查的。 |
程序运行所在的系统应对错误负责。 | 程序的代码负责处理异常。 |
它们在 java.lang.Error 包中进行了描述。 | 它们在 java.lang.Exception 包中描述 |
面试常见问题(持续更新)
finally 修饰的代码块一定会执行吗?
不一定,如果程序运行到finally之前的语句就异常终止,则代码无论如何也不会运行。
扩展阅读:
Difference Between Error and Exception in Java - Scaler Topics
Java基础常见面试题总结(下) | JavaGuide(Java面试 + 学习指南)