只要是程序,就会有错误跟异常,Java程序也不例外!
那什么是错误,什么是异常?Java异常又可分为哪两类?
Error
VirtualMachineError(虚拟机错误)
错误一般是程序在正常条件下,是系统内部的错误或者资源耗尽的错误!常见的错误主要有两种,内存溢出和栈溢出!
- OutOfMemoryError(内存溢出):一般是虚拟机分配的内存不能容下程序所需的数据,或者new 出的对象太多太多了(主要是堆内存或者方法区内存的不足)
- StackOverFlowError(栈溢出):常见的就是递归循环没有出口,导致虚拟机栈记录太多东西导致溢出
AWTError
一般是调用AWT包下的类,使用操作系统的资源时出现的错误
Exception
RuntimeExcept(运行时异常,非检查异常)
这种异常在我们的程序中是最常见的:
- NullPointException(空指针异常)
- IndexOutOfBoundsException (数组下表越界)
- ClassCastException (强转类型是异常)
- ClassNotFoundException (找不到指定类)
- ArithmeticException (算数运算异常 如除0)
- NumberFormatException (String类型装数字类型异常)
…IOException (其他异常,也叫做检查异常,必须处理的异常)
- FileNotFoundException (文件未找到异常)
- EOFException (文件已经结束异常)
- SQLException (SQL异常)
关于检查异常跟非异常
非检查异常(unchecked exception): 包括RuntimeException和Error类的异常,对于运行时的异常,编译器不要求程序员强制捕获异常处理或者抛出异常声明
检查异常(checked exception) : 编译器强制要求程序员对异常进行捕获,比如常见的IOException和SQLException!!
总结图:
最后给一张大图完整的说明Exception和Error: