Throwable 类是Java语言中所有错误或异常的超类。它的两个子类是Error和Exception(错误和异常)
图来自这里
Error:
error类包括一些严重的程序不能处理的系统错误类(系统错误或者资源错误),是不可控制的,如内存溢出、虚拟机错误、栈溢出等。这类错误一般与硬件有关,与程序本身无关,通常由系统进行处理,程序本身无法捕获和处理。
常见的error:
NoClassDefineError:类未定义错误
OutOfMemoryError:内存溢出错误
*Error:栈溢出错误
Exception:异常分为运行时异常和检查型异常。
运行时异常(RuntimeException) :程序员不需要在编译时捕获,运行期才会发生的异常
常见RuntimeException
NullPointerException:空指针引用异常
IndexOutOfBoundsException:下标越界异常
IllegalArgumentException:传递非法参数异常
检查型异常(CheckedException):必须在编译时进行手动try catch,否则编译不过去
常见CheckedException
ClassNotFoundException :类未找到异常
FileNotFountException:文件未找到异常
IOException:IO流异常。一般在读写数据的时候会出现这种问题
SQLException:操作数据库异常
TimeoutException:超时异常
ClassNotFountException和NoClassDefineError的区别
NoClassDefFoundError是一个错误(Error),而ClassNotFoundException是一个异常(Exception)。
NoClassDefFoundError:当目前执行的类已经编译,但是找不到它的定义。也就是说你如果编译了一个类B,在类A中调用,编译完成以后,你又删除掉B,运行A的时候那么就会出现这个错误
加载时从外存储器找不到需要的class就出现ClassNotFoundException,连接时从内存找不到需要的class就出现NoClassDefFoundError。
参考:https://www.cnblogs.com/zabulon/p/5893053.html