一、编译时异常:
1、除0发生算数异常(ArithmeticException)
关键技术解析:在数学中,除0的操作时不对的,在Java程序中也是这样,一个被除数为0,就要抛出异常.
2、数组下标越界异常(ArrayIndexOutOfException)
关键技术解析:ArrayIndexOutOfException异常用非法索引访问数组时抛出的异常,如果索引为负或大于等于数组大小,则该索引为非法索引。
3、数组元素类型不匹配异常(ArrayStoreExption)
关键技术解析:定义三个不同类型的元素对象,这三个元素对象相互组合,就会出现数组元素类型不匹配异常。试图将错误类型的对象储存到一个对象数组时抛出异常。
4、强制类型转换异常(ClassCastException)
关键技术解析:在进行转换时,转换的两个类型不匹配,就会发生异常。
5、索引越界异常(IndexOutOfBoundsException)
关键技术解析:索引越界异常在某排序索引(例如对字符串或数组的排序)超出范围是抛出。应用程序可以为这个类创建子类,以指示类似的异常。
6、空指针异常(NullPointerException)
关键技术解析:当应用程序试图在需要对象的地方使用null时,抛出该异常。这种情况包括:
a.调用null对象的实例方法
b.访问或修改null对象的字段
c.应用程序应该抛出该类实例,只是其他对null对象的非法使用
7、数字格式转换异常(NumberFornatException)
关键技术解析:当应用试图把一个字符串转换成一个数值类型,但这个字符串没有恰当的格式时就会抛出数字格式转换异常。
8、字符串索引越界异常(StringIndexOutException)
关键技术解析:StringIndexOutException异常用非法索引访问字符串抛出的异常。如果索引为负或大于等于字符串的大小,则该索引为非法索引。
8、操作错误(UnsupportedOperationException)
关键技术解析:java.lang.UnsupportedOperationException异常是由于Arrays.asList()返回java.util.Arrays$ArrayList,而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList,add等方法在AbstractList中是默认抛出UnsupportedOperationException而且不做任何操作。
二、运行时异常
1、找不到指定类时发生的异常(ClassNotFoundException)
关键技术解析:
a.当程序加载Class类中的forName()方法时,异常抛出。同时,也有其它方法可以抛出同样的异常,如:ClassLoader类中的findSystemClass方法,loadClass方法。
b.在构造时提供并通过getException()方法访问的"加载类是引发的可选异常",现在被称为原因,它可以通过Throwable.getCause()方法以及上面提到的"遗留犯方法"来访问。
2、请求的方法不存在(NoSuchMethodException)
关键技术解析:当应用试图调用某个类的某种方法,而该类中没有该方法的定义时抛出该异常。
java.lang
NullPointerException :空指针异常(出现条件:使用对象(字段/方法)值为null时)
ArrayIndexOutOfBoundsException /IndexOutOfBoundsException:数组下标越界异常(出现条件:使用超出数组下标范围的下标)
NumberFormatException :数字格式化异常(出现条件:不符合转换格式的字符串被转换成数字时)
ClassCastException :类型转换异常(出现条件:将一个类型转换成另一个类型,两个类型没有继承关系)
ArithmeticException : 数学运算异常 (出现条件: ex:/by zero)
NoSuchFieldException:①没有对应字段;②属性为私有时获取Field用的方法不是getDeclaredField
NoSuchMethodException:方法未找到异常
NumberFormatException:字符串转换为数字异常、数据格式异常
IllegalArgumentException:非法参数异常,比如一个方法是getXXX(String id,String num)最多传入两个参数,我们在调用接口传参时传入了3个参数或者以上,就会出现这个错误
IllegalAccessException:这个异常的解释是 “没有访问权限 “,当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了Package的情况下要注意这个异常。
IllegalStateException:该异常表示,当前对客户端的响应已经结束,不能在响应已经结束(或说消亡)后再向 客户端(实际上是缓冲区)输出任何内容
IncompatibleClassChangeError:①项目中导入的jar包冲突,②maven项目中同一个依赖有两个不同的版本号
InstantiationException:不能实例化某个对象,一般在我们使用java反射机制去创建某个对象的时候实例化到了一个抽象类或者接口(java中抽象类和接口是不能被实例化)
InterruptedException:当阻塞方法收到中断请求的时候就会抛出InterruptedException异常
NegativeArraySizeException:如果应用程序试图创建大小为负的数组,则抛出该异常
SecurityException:启动另外一个app时候报没有权限的错误
StackOverflowError:函数调用栈太深了,注意代码中是否有了循环调用方法而无法退出的情况,在jvm运行时的数据区域中有一个java虚拟机栈,当执行java方法时会进行压栈弹栈的操作。在栈中会保存局部变量,操作数栈,方法出口等等。jvm规定了栈的最大深度,当执行时栈的深度大于了规定的深度,就会抛出StackOverflowError错误。
StringIndexOutOfBoundsException:字符串截取下标越界
BusinessException:自定义业务异常
java.sql
SQLException:操作数据库异常,通常用于写sql时抛出的异常
SQLTimeoutException:sql执行超时
java.text
ParseException : 解析异常(出现条件:需要转换成Date的字符串内容,不符合SimpleDateFormat对象指定的格式)
java.io
IOException:输入输出异常,一般读写会出现这个异常,比如你想从磁盘读取一个文件到你写的程序中,如果程序中没有这文件,java虚拟机就会报这个异常
FileNotFoundException:文件未找到异常
CharConversionException:可能是对所传参数时字符编码解析失败
ObjectStreamException:该类表示读取对象操作失败,原因是无法读取流中对象的基本数据或者是序列化对象的末尾数据,该异常会因两种原因被抛出:①企图读取的对象下一部分是基础数据,在这种情况下,OptionalDataException的长度字段将会被设置为立刻可从流中读出的基础数据字节数,文件结束字段为false,②企图使用类声明的readObject或者readExternal方法来读取数据末尾后的部分。在这种情况下,文件结束字段会被设置为true,并且长度字段设置为0
InvalidClassException:可能是序列化兼容性所致
NotActiveException:当序列化和反序列化不活动时抛出
NotSerializableException:该异常是指传输的对象类型不可序列化,要使用对象流传输的对象的类必须实现Serializable接口
java.net
BindException:端口被占用【java.net.BindException:Address already in use: JVM_Bind】
SocketException:
java.net.SocketException: Connection refused: connect。具有ip地址的机器不能找到,或者是该ip存在,但找不到指定的端口进行监听
java.net.SocketException: Socket is closed。该异常在客户端和服务器均可能发生。异常的原因是己方主动关闭了连接后(调用了Socket的close方法)再对网络连接进行读写操作。
SocketTimeoutException:客户端没有在限定的时间内将数据发送给服务器,服务器为了保证服务性能,认定那个连接已经失效【java.net.SocketTimeoutException.Read timed out】
ConnectException:【java.net.ConnectException: Connection refused: no further information】
看你的host和port是否写错了,如 [ 127.0.0.1:8080 ]
如果检查自己写的socket
可能是防火墙的原因,关闭防火墙试试
看你的server是否真正的运行起来了,比如server在启动过程某些组件加载异常,会导致服务启动不成功。