Error对象是由Java虚拟机生成并抛出,大部分时间与编写的程序无关。
例如当JVM不再有继续执行操作所需的内存资源时,将出现OutOfMemoryError,这个时候虚拟机一般会选择终止线程。
常见子类
错误类 | 描述 |
---|---|
AbstractMethodError | 当应用试图调用抽象方法时抛出 |
Asserti | 断言失败 |
ClassCircularityError | 在初始化一个类时,若检测到类之间循环依赖则抛出该错误 |
ClassFormatError | 当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出 |
ExceptionInInitializerError | 当执行一个类的静态初始化程序的过程中,发生了异常时抛出 |
IllegalAccessError | 当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常 |
IncompatibleClassChangeError | 不兼容的类变化错误 |
Instantiati | 试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常 |
InternalError | Java虚拟机发生了内部错误 |
LinkageError | 链接错误。该错误及其所有子类指示某个类依赖于另外一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况 |
NoClassDefFoundError | 当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误 |
NoSuchFieldError | 当应用试图访问或者修改某类的某个域,而该类的定义中没有该域的定义时抛出该错误 |
NoSuchMethodError | 应用试图调用某类的某个方法,而该类的定义中没有该方法的定义时抛出该错误 |
OutOfMemoryError | 当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误 |
StackOverflowError | 当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误 |
ThreadDeath | 当调用Thread类的stop方法时抛出该错误,用于指示线程结束 |
UnknownError | 用于指示Java虚拟机发生了未知严重错误的情况 |
UnsatisfiedLinkError | 当Java虚拟机未找到某个类的声明为native方法的本机语言定义时抛出 |
UnsupportedClassVersi | 当Java虚拟机试图从读取某个类文件,但是发现该文件的主、次版本号不被当前Java虚拟机支持的时候,抛出该错误 |
VerifyError | 当验证器检测到某个类文件中存在内部不兼容或者安全问题时抛出该错误 |
VirtualMachineError | 用于指示虚拟机被破坏或者继续执行操作所需的资源不足的情况 |