- Java 和 MySQL 教程
- Java 和 MySQL - 主页
- Java 和 MySQL - 概述
- Java 和 MySQL - 环境设置
- Java 和 MySQL - 示例代码
- Java 和 MySQL - 连接
- Java 和 MySQL - 异常
- Java 和 MySQL 语句
- Java 和 MySQL - 声明
- Java 和 MySQL - 准备语句
- Java 和 MySQL - CallableStatement
- Java 和 MySQL 结果
- Java 和 MySQL - 结果集
- Java 和 MySQL - 导航结果集
- Java 和 MySQL - 查看结果集
- Java 和 MySQL - 更新结果集
- Java 和 MySQL 事务
- Java 和 MySQL - 事务
- Java 和 MySQL - 提交和回滚
- Java 和 MySQL - SavePoint 事务
- Java 和 MySQL 批处理
- Java 和 MySQL - 批处理
- 批处理 - 语句
- 批处理-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 对象具有以下可用于检索有关异常的附加信息的方法 -
| 方法 | 描述 |
|---|---|
| 获取错误代码() | 获取与异常关联的错误号。 |
| 获取消息() | 获取由驱动程序处理的 JDBC 驱动程序的错误消息,或者获取数据库错误的 Oracle 错误号和消息。 |
| 获取SQLState() | 获取 XOPEN SQLstate 字符串。对于 JDBC 驱动程序错误,此方法不会返回任何有用的信息。对于数据库错误,将返回五位 XOPEN SQLstate 代码。该方法可以返回 null。 |
| 获取下一个异常() | 获取异常链中的下一个 Exception 对象。 |
| 打印堆栈跟踪() | 打印当前异常或可抛出异常,并且回溯到标准错误流。 |
| printStackTrace(PrintStream s) | 将此 throwable 及其回溯打印到您指定的打印流。 |
| 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://localhost/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:\>