- Java & MySQL 教程
- Java & MySQL - 首页
- Java & MySQL - 概述
- Java & MySQL - 环境设置
- Java & MySQL - 示例代码
- Java & MySQL - 连接
- Java & MySQL - 异常
- Java & MySQL 语句
- Java & MySQL - Statement
- Java & MySQL - PreparedStatement
- Java & MySQL - CallableStatement
- Java & MySQL 结果集
- Java & MySQL - ResultSet
- Java & MySQL - 遍历结果集
- Java & MySQL - 查看结果集
- Java & MySQL - 更新结果集
- Java & MySQL 事务
- Java & MySQL - 事务
- Java & MySQL - 提交与回滚
- Java & MySQL - 保存点事务
- Java & MySQL 批处理
- Java & MySQL - 批处理
- 批处理 - Statement
- 批处理 - PreparedStatement
- Java & MySQL 流式处理
- Java & MySQL - 流式数据
- Java & MySQL 示例
- Java & MySQL - 创建数据库
- Java & MySQL - 选择数据库
- Java & MySQL - 删除数据库
- Java & MySQL - 创建表
- Java & MySQL - 删除表
- Java & MySQL - 插入记录
- Java & MySQL - 查询记录
- Java & MySQL - 更新记录
- Java & MySQL - 删除记录
- Java & MySQL - Where 子句
- Java & MySQL - Like 子句
- Java & MySQL - 数据排序
- Java & MySQL 有用资源
- Java & MySQL - 快速指南
- Java & MySQL - 有用资源
- Java & MySQL - 讨论
Java & MySQL - 异常处理
异常处理允许您以受控的方式处理异常情况,例如程序定义的错误。
当发生异常情况时,会抛出一个异常。术语“抛出”表示当前程序执行停止,并且控制权重定向到最近适用的 catch 子句。如果不存在适用的 catch 子句,则程序的执行结束。
JDBC 异常处理与 Java 异常处理非常相似,但对于 JDBC 而言,您将处理的最常见异常是 java.sql.SQLException。
SQLException 方法
SQLException 既可能发生在驱动程序中,也可能发生在数据库中。当发生此类异常时,类型为 SQLException 的对象将传递到 catch 子句。
传递的 SQLException 对象具有以下可用于检索有关异常的其他信息的方法:
方法 | 描述 |
---|---|
getErrorCode( ) | 获取与异常关联的错误编号。 |
getMessage( ) | 获取 JDBC 驱动程序的错误消息(由驱动程序处理的错误),或获取 Oracle 错误编号和数据库错误消息。 |
getSQLState( ) | 获取 XOPEN SQLstate 字符串。对于 JDBC 驱动程序错误,此方法不会返回任何有用的信息。对于数据库错误,将返回五位数的 XOPEN SQLstate 代码。此方法可能会返回 null。 |
getNextException( ) | 获取异常链中的下一个 Exception 对象。 |
printStackTrace( ) | 将当前异常或可抛出对象及其回溯打印到标准错误流。 |
printStackTrace(PrintStream s) | 将此可抛出对象及其回溯打印到您指定的打印流。 |
printStackTrace(PrintWriter w) | 将此可抛出对象及其回溯打印到您指定的打印写入器。 |
通过利用从 Exception 对象中获得的信息,您可以捕获异常并适当地继续您的程序。以下是 try 块的一般形式:
try { // Your risky code goes between these curly braces!!! } catch(Exception ex) { // Your exception handling code goes between these // curly braces } finally { // Your must-always-be-executed code goes between these // curly braces. Like closing database connection. }
示例
学习以下示例代码以了解 try....catch...finally 块的用法。
此代码是基于上一章中完成的环境和数据库设置编写的。
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class TestApplication { static final String DB_URL = "jdbc:mysql://127.0.0.1/TUTORIALSPOINT"; static final String USER = "guest"; static final String PASS = "guest123"; static final String QUERY = "{call getEmpName (?, ?)}"; public static void main(String[] args) { // Open a connection try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); CallableStatement stmt = conn.prepareCall(QUERY); ) { // Bind values into the parameters. stmt.setInt(1, 1); // This would set ID // Because second parameter is OUT so register it stmt.registerOutParameter(2, java.sql.Types.VARCHAR); //Use execute method to run stored procedure. System.out.println("Executing stored procedure..." ); stmt.execute(); //Retrieve employee name with getXXX method String empName = stmt.getString(2); System.out.println("Emp Name with ID: 1 is " + empName); } catch (SQLException e) { e.printStackTrace(); } } }
现在让我们按如下方式编译上述示例:
C:\>javac TestApplication.java C:\>
当您运行 TestApplication 时,如果没有任何问题,它会产生以下结果,否则相应的错误会被捕获并显示错误消息:
C:\>java TestApplication Executing stored procedure... Emp Name with ID: 1 is Zara C:\>
广告