错误类型累积(持续更新)
作者:互联网
java异常结构
Throwable是异常体系的根,又分为两个体系:Error、Exception,前者表示严重的错误,程序对此无能为力。而Exception是运行中的错误,分为RuntimeException和checked Exception(非运行时异常)。其中非运行时异常应该捕捉处理
1、UnsatisfiedDependencyException :这是在将一个java类注入spring的时候报的错,说是创建某个bean失败,可能是创建的bean的类路径找不到。pom添加依赖很容易出问题
模块找不到程序包,需要重新去maven打包,mvn -install可以直接使用maven将找不到的程序包模块添加进来
2、ClassCastException:类型转换错误
3、数据库操作报错:无效标识符,有可能是属性和字段不匹配,比如说缺少字段
java.sql.SQLSyntaxErrorException: ORA-00900: 无效 SQL 语句,找不到指定执行SQL语句的表等,或者SQL语句错误
4、初始异常:java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 违反唯一约束条件 (BDC_YW_USER.SYS_HGID) 这可能是某一个字段是关联外键,不能随意插入,或者字段过大等等
其中BDC_YW_USER是数据表名,SYS_HGID是违反约束的字段
5、java.lang.NumberFormatException: For input string: "" 异常是指数字格式异常,我的是前端参数为空,所以出错
6、对List进行操作时报错java.lang.UnsupportedOperationException,后来发现操作的List是由数组转换而成的,也就是如下:
String[] array = {"1","2","3","4","5"};
List<String> list = Arrays.asList(array);
list.add("6");
如上操作会报异常,数组转换而成的List不能使用add添加元素。
可先将其转为ArrayList,在进行操作,如下:
String[] array = {"1","2","3","4","5"};
List<String> list = Arrays.asList(array);
List arrList = new ArrayList(list);
arrList.add("6");
7、异常解决:Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
数据连接池空闲时间设置过大,超过了mysql最大空闲时间
sprintboot:time-between-eviction-runs-millis
8、Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.apache.poi.hssf.usermodel.HSSFWorkbook.close()V
poi版本冲突,检查maven依赖,去除不需要的版本。
9、springboot 打包jar后找不到resources下文件
应使用:ClassPathResource classPathResource = new ClassPathResource("importLpbExcel.json");
10、Apollo 2021-09-06 15:11:25.552 ERROR 360 --- [Apollo-ServiceLocator-1] c.c.f.a.p.c.AdminServiceAddressLocator : Get admin server address from meta server failed. env: DEV, meta server address:http://apolloConfig.gisquest.com:9100
apollo-env.properties 配置文件中 apolloConfig.gisquest.com 访问失败,换为ip修复。
local.meta=http://localhost:8080
dev.meta=http://10.160.15.34:9100
fat.meta=http://apolloConfig.gisquest.com:9100
uat.meta=http://apolloConfig.gisquest.com:9100
lpt.meta=${lpt_meta}
pro.meta=http://apolloConfig.gisquest.com:9100
11、com.alibaba.fastjson.JSONException: write javaBean error, fastjson version 1.2.73, class org.springframework.web.multipart.MultipartFileResource, fieldName : resource
接口使用实体接收参数时,含有不可序列化的参数,可使用
@JSONFailed(serialize=false)
排除该属性
12、通过网关访问服务提供接口时,post参数过大返回400 bad request 错误。
远程调用 feign将post参数进行url拼接,造成请求头部过大,spring boot默认头部大小为8k。解决方式为,设置参数:server.max-http-header-size: 1048576 单位为字节(1M)。
13、Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 30000, active 0, maxActive 200, creating 0, createErrorCount 7
数据库挂掉一段时间后连接池无法创建新的连接
连接池设置了关闭自动重连
//数据库服务宕机自动重连机制
dataSource.setBreakAfterAcquireFailure(true);
//连接出错后重试时间间隔
dataSource.setTimeBetweenConnectErrorMillis(60000);
//超时重试次数
dataSource.setConnectionErrorRetryAttempts(3);同类型问题:
Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 0, maxActive 100, creating 1, createElapseMillis 686180, createErrorCount 3
keepAlive 保持连接有效
14、ftp下载文件报错:Host attempting data connection ip is not same as server ip
加上这句代码可以解决:ftpClient.setRemoteVerificationEnabled(false); 这句代码的意思是:取消服务器获取自身Ip地址和提交的host进行匹配,否则当不一致时报出以上异常。
15、java.sql.SQLRecoverableException:Closed Connection
spring使用SqlSession获取数据库连接异常,Connection connection = sqlSession.getConnection();
问题出现在Oracle数据库连接上,
数据连接池创建时未配置:dataSource.setValidationQuery("select 1 from dual");
检查当前连接是否有效,无效获取新的连接
16、java.lang.StringIndexOutOfBoundsException: String index out of range: -1
substring(int start,in end) 方法报错,字符串切割的结束数字end大于字符串的长度(多数情况为字符串为空没有处理)
17、org.springframework.transaction.NoTransactionException: No transaction aspect-managed TransactionStatus in scope
异常原因:异常捕捉手动回滚事务,没有添加注解
//手动开启事务回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
注解:@Transactional
18、nginx报错:upstream sent too big header while reading response header from upstream
请求携带的头部数据过大,配置http段:
proxy_buffer_size 128k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
19、Result Maps collection does not contain value for java.lang.String
<select id="selectxxxx" parameterType="xx" resultMap="java.lang.String">
mybatis查询结果使用resultMap接收String类型报错,可怕的是,会影响整个项目的数据库查询报错
20、java.lang.IllegalArgumentException: invalid comparison: java.sql.Timestamp and java.lang.String
mybatis传入的日期类型参数被当作String做对比异常 item.jgsj !=''
标签:累积,java,String,错误,异常,更新,meta,http,com 来源: https://www.cnblogs.com/hqt-bky/p/16197892.html