面试题答案
一键面试1. SQLException
- 可能出现的场景:这是JDBC中最常见的异常,涵盖各种数据库相关的错误。例如,SQL语句语法错误、数据库连接失败、数据库操作权限不足等。比如执行
Statement.executeUpdate("invalid SQL syntax")
时,会因语法错误抛出此异常;在使用DriverManager.getConnection(url, username, password)
时,如果URL错误、用户名密码不正确导致连接失败也会抛出。 - 处理方式:可以通过
e.getErrorCode()
获取数据库特定的错误码,e.getMessage()
获取详细错误信息。根据错误码和信息进行针对性处理,如若是权限不足,提示用户联系管理员获取权限;若是连接失败,检查URL、用户名、密码等配置信息并重试连接。
2. SQLTimeoutException
- 可能出现的场景:当数据库操作在指定时间内未能完成时抛出。例如,执行一个复杂的查询语句,而设置了较短的查询超时时间,如
Statement.setQueryTimeout(5)
,如果查询在5秒内未完成就会抛出此异常。 - 处理方式:可以适当增加超时时间,或者优化SQL语句提高查询效率。如果增加超时时间后仍频繁出现此异常,可能需要对数据库进行性能调优,分析查询语句是否存在索引缺失等问题。
3. BatchUpdateException
- 可能出现的场景:在使用批量更新操作(如
Statement.addBatch()
和Statement.executeBatch()
)时,如果其中某一条语句执行失败,就会抛出此异常。比如批量插入数据,其中一条数据违反了数据库的唯一性约束,就会导致该异常。 - 处理方式:可以通过
e.getUpdateCounts()
获取已经成功执行的更新操作的计数数组,根据计数数组判断哪些操作成功,哪些失败。对于失败的操作,可以单独处理,如修正数据后重新尝试插入。还可以使用e.getNextException()
获取下一个异常(如果有多个异常)。