前言:在IDEA上开发springboot项目时遇到一个链表下标越界的异常,解决后颇有感悟,特做此纪录。
异常描述:
ERROR 13744 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IndexOutOfBoundsException: Index: 0, Size: 0] with root cause
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
问题代码为红框部分:
![](https://i-blog.csdnimg.cn/blog_migrate/0016d108d1d8b16e964f5f65e95dbdeb.png)
问题分析:
当程序执行到else的情况时,userConcernList的size为0,是个空链表,若此时再调用get方法,就会报错。
解决方法:
将参数封装成对象再往数据库添加
总结:
在往数据库添加数据需要判断数据库中是否已有记录,判断的返回结果通常是List。在List为空的情况下,调用其方法需要格外注意,例如:调用get()则会报下标越界的异常。
当然还可以联想到其他情况,当判断数组、集合为空后,注意不要取其中内容,不然就会报上述错误。