2023年11月29日发(作者:)
每个类型的异常的特点
体系 :
Error类体系描述了Java运⾏系统中的内部错误以及资源耗尽的情形。应⽤程序不应该抛出这种类型的对
象(⼀般是由虚拟机抛出)。如果出现这种错误,除了尽⼒使程序安全退出外,在其他⽅⾯是⽆能为⼒的。
所以,在进⾏程序设计时,应该更关注Exception体系。
ion体系包括RuntimeException体系和其他⾮RuntimeException的体系 :
① RuntimeException:RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等
等。处理RuntimeException的原则是:如果出现RuntimeException,那么⼀定是程序员的错误。例如,可以
通过检查数组下标和数组边界来避免数组越界访问异常。
②其他⾮RuntimeException(IOException等等):这类异常⼀般是外部错误,例如试图从⽂件尾后读取
数据等,这并不是程序本⾝的错误,⽽是在应⽤环境中出现的外部错误。
⼆,常见的⼏种 RuntimeException如下:
NullPointerException - 空指针引⽤异常
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递⾮法参数异常。
ArithmeticException - 算术运算异常
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常
NegativeArraySizeException - 创建⼀个⼤⼩为负数的数组错误异常
NumberFormatException - 数字格式异常
SecurityException - 安全异常
UnsupportedOperationException - 不⽀持的操作异常
三、了解的其他异常
EOFException -⽂件已结束异常
FileNotFoundException -⽂件未找到异常
NumberFormatException -字符串转换为数字异常
SQLException -操作数据库异常
IOException -输⼊输出异常
NoSuchMethodException -⽅法未找到异常
ctMethodError
抽象⽅法错误。当应⽤试图调⽤抽象⽅法时抛出。
ionError
断⾔错。⽤来指⽰⼀个断⾔失败的情况。
ircularityError
类循环依赖错误。在初始化⼀个类时,若检测到类之间循环依赖则抛出该异常。
ormatError
ormatError
类格式错误。当Java虚拟机试图从⼀个⽂件中读取Java类,⽽检测到该⽂件的内容不符合类的有效格式时抛
出。
错误。是所有错误的基类,⽤于标识严重的程序运⾏问题。这些问题通常描述⼀些不应被应⽤程序捕获的反
常情况。
ionInInitializerError
初始化程序错误。当执⾏⼀个类的静态初始化程序的过程中,发⽣了异常时抛出。静态初始化程序是指直接
包含于类中的static语句段。
lAccessError
违法访问错误。当⼀个应⽤试图访问、修改某个类的域(Field)或者调⽤其⽅法,但是⼜违反域或⽅法的
可见性声明,则抛出该异常。
atibleClassChangeError
不兼容的类变化错误。当正在执⾏的⽅法所依赖的类定义发⽣了不兼容的改变时,抛出该异常。⼀般在修改
了应⽤中的某些类的声明定义⽽没有对整个应⽤重新编译⽽直接运⾏的情况下,容易引发该错误。
tiationError
实例化错误。当⼀个应⽤试图通过Java的new操作符构造⼀个抽象类或者接⼝时抛出该异常.
alError
内部错误。⽤于指⽰Java虚拟机发⽣了内部错误。
eError
链接错误。该错误及其所有⼦类指⽰某个类依赖于另外⼀些类,在该类编译之后,被依赖的类改变了其类定
义⽽没有重新编译所有的类,进⽽引发错误的情况。
sDefFoundError
未找到类定义错误。当Java虚拟机或者类装载器试图实例化某个类,⽽找不到该类的定义时抛出该错误。
FieldError
域不存在错误。当应⽤试图访问或者修改某类的某个域,⽽该类的定义中没有该域的定义时抛出该错误。
MethodError
⽅法不存在错误。当应⽤试图调⽤某类的某个⽅法,⽽该类的定义中没有该⽅法的定义时抛出该错误。
虚拟机错误。⽤于指⽰虚拟机被破坏或者继续执⾏操作所需的资源不⾜的情况。
eticException
算术条件异常。譬如:整数除零等。
ndexOutOfBoundsException
数组索引越界异常。当对数组的索引值为负数或⼤于等于数组⼤⼩时抛出。
toreException
数组存储异常。当向数组中存放⾮数组声明类型对象时抛出。
astException
类造型异常。假设有类A和B(A不是B的⽗类或⼦类),O是A的实例,那么当强制将O构造为类B的实例时
抛出该异常。该异常经常被称为强制类型转换异常。
otFoundException
找不到类异常。当应⽤试图根据字符串形式的类名构造类,⽽在遍历CLASSPAH之后找不到对应名称的
class⽂件时,抛出该异常。
otSupportedException
不⽀持克隆异常。当没有实现Cloneable接⼝或者不⽀持克隆⽅法时,调⽤其clone()⽅法则抛出该异常。
nstantNotPresentException
枚举常量不存在异常。当应⽤试图通过名称和枚举类型访问⼀个枚举对象,但该枚举对象并不包含常量时,
抛出该异常。
ion
根异常。⽤以描述应⽤程序希望捕获的情况。
lAccessException
违法的访问异常。当应⽤试图通过反射⽅式创建某个类的实例、访问该类属性、调⽤该类⽅法,⽽当时⼜⽆
法访问类的、属性的、⽅法的或构造⽅法的定义时抛出该异常。
lMonitorStateException
违法的监控状态异常。当某个线程试图等待⼀个⾃⼰并不拥有的对象(O)的监控器或者通知其他线程等待
该对象(O)的监控器时,抛出该异常。
lStateException
违法的状态异常。当在Java环境和应⽤尚未处于某个⽅法的合法调⽤状态,⽽调⽤了该⽅法时,抛出该异
常。
lThreadStateException
违法的线程状态异常。当县城尚未处于某个⽅法的合法调⽤状态,⽽调⽤了该⽅法时,抛出异常。
utOfBoundsException
索引越界异常。当访问某个序列的索引值⼩于0或⼤于等于序列⼤⼩时,抛出该异常。
tiationException
实例化异常。当试图通过newInstance()⽅法创建某个类的实例,⽽该类是⼀个抽象类或接⼝时,抛出该异
常。
uptedException
被中⽌异常。当某个线程处于长时间的等待、休眠或其他暂停状态,⽽此时其他的线程通过Thread的
interrupt⽅法终⽌该线程时抛出该异常。
⽅法不存在异常。当访问某个类的不存在的⽅法时抛出该异常。
interException
空指针异常。当应⽤试图在要求使⽤对象的地⽅使⽤了null时,抛出该异常。譬如:调⽤null对象的实例⽅
法、访问null对象的属性、计算null对象的长度、使⽤throw语句抛出null等等。
FormatException
数字格式异常。当试图将⼀个String转换为指定的数字类型,⽽该字符串确不满⾜数字类型要求的格式时,
抛出该异常。
eException
运⾏时异常。是所有Java虚拟机正常操作期间可以被抛出的异常的⽗类。
tyException
安全异常。由安全管理器抛出,⽤于指⽰违反安全情况的异常。
IndexOutOfBoundsException
字符串索引越界异常。当使⽤索引值访问某个字符串中的字符,⽽该索引值⼩于0或⼤于等于序列⼤⼩时,
抛出该异常。
tPresentException
类型不存在异常。当应⽤试图以某个类型名称的字符串表达⽅式访问该类型,但是根据给定的名称⼜找不到
该类型是抛出该异常。该异常与ClassNotFoundException的区别在于该异常是unchecked(不被检查)异
常,⽽ClassNotFoundException是checked(被检查)异常。
ortedOperationException
不⽀持的⽅法异常。指明请求的⽅法不被⽀持情况的异常。


发布评论