目录
引言
java和数据库交互常见Exception汇总,可用于平时运维常见问题排查和日志监控。
【sql执行异常】
#【基类】各类sql报错,比如kill sql也会报该错误
SQLException
#【基类】没有任何应用程序级功能干预时,重试先前失败操作可以成功的情况下抛出的 SQLException 子类
MySQLTransientException/SQLTransientException
#表示在没有进行任何应用程序级更改的情况下重试操作时,失败的连接操作可以成功
MySQLTransientConnectionException/SQLTransientConnectionException
#此异常表示由于死锁或其他事务序列化失败,当前语句自动被数据库回滚
MySQLTransactionRollbackException/SQLTransactionRollbackException
#SQL超时异常,比如MyBatis配置了defaultStatementTimeout,sql执行耗时超过了配置
MySQLTimeoutException/SQLTimeoutException
#【基类】重试相同操作将失败(除非纠正了 SQLException 的 cause)的情况下抛出的 SQLException 子类
MySQLNonTransientException/SQLNonTransientException
#此异常表示正在进行的查询违反了 SQL 语法规则
MySQLSyntaxErrorException/SQLSyntaxErrorException
#MySQL语句被取消异常
MySQLStatementCancelledException
#MySQL查询中断异常
MySQLQueryInterruptedException
#表示在失败原因没有纠正的情况下重试操作时,失败的连接操作不会成功
MySQLNonTransientConnectionException/SQLNonTransientConnectionException
#此异常表示建立连接期间提供的授权凭据无效
MySQLInvalidAuthorizationSpecException/SQLInvalidAuthorizationSpecException
#此异常表示违反了一个完整性约束(外键、主键或唯一键)
MySQLIntegrityConstraintViolationException/SQLIntegrityConstraintViolationException
#此异常表示各种数据错误,包括但不限于未经允许的转换、除以0、对函数无效的参数。
MySQLDataException/SQLDataException
【连接异常】
#【基类】应用程序执行某些恢复步骤并重试整个事务或事务分支(在分布式事务中)后,可以成功执行先前失败操作的情况下抛出的 SQLException 子类。恢复操作至少必须包括关闭当前连接和获得一个新连接
SQLRecoverableException
#表示与数据库通信错误的异常,比如没有配置探活,或者socketTimeout配置过小应用无法启动,端口配置错误,网络异常等
CommunicationsException
#与服务器还没连接,正准备建立连接,试图将套接字连接到远程地址和端口时发生错误的情况下,抛出此异常。这些错误通常发生在拒绝远程连接时(例如,没有任何进程在远程地址/端口上进行侦听),如果是网络延迟问题可以尝试调整jdbc connectTimeout 参数配置
ConnectException
#与服务器连接成功,在数据传输过程中,如果在读取或接受套接字时发生超时,则抛出此异常,如果是网络延迟问题可以尝试调整jdbc socketTimeout 参数配置
SocketTimeoutException
参考
#SocketTimeoutException和ConnectException简介
SocketTimeoutException和ConnectException简介_u010142437的博客-CSDN博客
#官档的jdbc5.1和8.0 Exception改变
MySQL :: MySQL Connector/J 8.0 Developer Guide :: 4.4.1.6 Changes for Exceptions
#JDK 1.6中文文档
java.sql.SQLException - 提供关于数据库访问错误或其他错误信息的异常。