其他分享
首页 > 其他分享> > 错误类型累积(持续更新)

错误类型累积(持续更新)

作者:互联网

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