Java之常见异常 整理集合

java.lang

  1. NullPointerException 空指针异常(出现条件:使用对象(字段/方法)值为null时)
  2. ArrayIndexOutOfBoundsException /IndexOutOfBoundsException数组下标越界异常(出现条件:使用超出数组下标范围的下标)
  3. NumberFormatException 数字格式化异常(出现条件:不符合转换格式的字符串被转换成数字时)
  4. ClassCastException :类型转换异常(出现条件:将一个类型转换成另一个类型,两个类型没有继承关系)
  5. ArithmeticException 数学运算异常 (出现条件: ex:/by zero)
  6. NoSuchFieldException①没有对应字段;②属性为私有时获取Field用的方法不是getDeclaredField
  7. NoSuchMethodException方法未找到异常
  8. NumberFormatException字符串转换为数字异常数据格式异常
  9. IllegalArgumentException非法参数异常,比如一个方法是getXXX(String id,String num)最多传入两个参数,我们在调用接口传参时传入了3个参数或者以上,就会出现这个错误
  10. IllegalAccessException这个异常的解释是 “没有访问权限 “,当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了Package的情况下要注意这个异常。
  11. IllegalStateException该异常表示,当前对客户端的响应已经结束,不能在响应已经结束(或说消亡)后再向 客户端(实际上是缓冲区)输出任何内容
  12. IncompatibleClassChangeError①项目中导入的jar包冲突,②maven项目中同一个依赖有两个不同的版本号
  13. InstantiationException不能实例化某个对象,一般在我们使用java反射机制去创建某个对象的时候实例化到了一个抽象类或者接口(java中抽象类和接口是不能被实例化)
  14. InterruptedException当阻塞方法收到中断请求的时候就会抛出InterruptedException异常
  15. NegativeArraySizeException如果应用程序试图创建大小为负的数组,则抛出该异常
  16. SecurityException启动另外一个app时候报没有权限的错误
  17. StackOverflowError函数调用栈太深了,注意代码中是否有了循环调用方法而无法退出的情况,在jvm运行时的数据区域中有一个java虚拟机栈,当执行java方法时会进行压栈弹栈的操作。在栈中会保存局部变量,操作数栈,方法出口等等。jvm规定了栈的最大深度,当执行时栈的深度大于了规定的深度,就会抛出StackOverflowError错误。
  18. StringIndexOutOfBoundsException字符串截取下标越界
  19. BusinessException自定义业务异常

 

java.sql

  1. SQLException操作数据库异常通常用于写sql时抛出的异常
  2. SQLTimeoutExceptionsql执行超时

 

java.text

  1. ParseException : 解析异常(出现条件:需要转换成Date的字符串内容,不符合SimpleDateFormat对象指定的格式)

 

java.io

  1. IOException输入输出异常一般读写会出现这个异常,比如你想从磁盘读取一个文件到你写的程序中,如果程序中没有这文件,java虚拟机就会报这个异常
  2. FileNotFoundException文件未找到异常
  3. CharConversionException可能是对所传参数时字符编码解析失败
  4. ObjectStreamException该类表示读取对象操作失败,原因是无法读取流中对象的基本数据或者是序列化对象的末尾数据,该异常会因两种原因被抛出:企图读取的对象下一部分是基础数据,在这种情况下,OptionalDataException的长度字段将会被设置为立刻可从流中读出的基础数据字节数,文件结束字段为false,企图使用类声明的readObject或者readExternal方法来读取数据末尾后的部分。在这种情况下,文件结束字段会被设置为true,并且长度字段设置为0
  5. InvalidClassException可能是序列化兼容性所致
  6. NotActiveException当序列化和反序列化不活动时抛出
  7. NotSerializableException该异常是指传输的对象类型不可序列化,要使用对象流传输的对象的类必须实现Serializable接口

java.net

  1. BindException端口被占用【java.net.BindException:Address already in use: JVM_Bind
  2. SocketException
    1. java.net.SocketException: Connection refused: connect。具有ip地址的机器不能找到或者是该ip存在,但找不到指定的端口进行监听
    2. java.net.SocketException: Socket is closed该异常在客户端和服务器均可能发生。异常的原因是己方主动关闭了连接后(调用了Socket的close方法)再对网络连接进行读写操作。
  3. SocketTimeoutException客户端没有在限定的时间内将数据发送给服务器,服务器为了保证服务性能,认定那个连接已经失效【java.net.SocketTimeoutException.Read timed out
  4. ConnectException:【java.net.ConnectException: Connection refused: no further information】 
    1. 看你的host和port是否写错了,如 [ 127.0.0.1:8080 ]
    2. 如果检查自己写的socket
    3. 可能是防火墙的原因,关闭防火墙试试
    4. 看你的server是否真正的运行起来了,比如server在启动过程某些组件加载异常,会导致服务启动不成功。
  5. ......

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值