jdk动态代理报UndeclaredThrowableException异常
1、发现问题
在使用LG大佬开源的ThinkItCMS系统的时候,出现了一个困扰好久的问题,添加内容的时候怎么都没办法渲染成html页面,java后端控制台什么问题都没报,找问题简直无从下手,作者说走断点看下,于是发现在service层调用操作数据库方法的时候出错,但是错误没报,直接跳到UndeclaredThrowableException方法中。
先上LG大佬的开源CMS系统的链接,以示感谢:
@slfj大佬的ThinkItCMS (gitee上)
2、搜索问题
经百度,发现有人跟我的问题类似,UndeclaredThrowableException是jdk动态代理的异常,但是异常被包装了,没有输出到控制台。
可以参考:
dragon@oo
的 JDK动态代理UndeclaredThrowableException异常
意思大概就是,既然jdk动态代理代码中的异常不抛,那我们在外面套个异常,就能正常抛出来了,于是我尝试在异常方法中套个try catch。
3、发现真正问题
好的,百度诚不骗我,果然异常正常抛出了。
4、解决问题
大佬LG啥也不说,直接给我丢了个解决问题的链接
意思是:我的MySql版本太高了,对only_full_group_by有修改,建议进行修改。修改代码,MySQL中执行:
set @@GLOBAL.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
然鹅!我的执行后报了'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'
错误
顺带一提,我的mysql版本为8.0.26
emmm,别慌,我们试着将NO_AUTO_CREATE_USER删掉
诶诶~成功了!
再回到我的CMS系统测试,终于成功了!!!