Java Mysql 简明教程
Java & MySQL - Exceptions Handling
异常处理允许您以受控方式处理异常情况(例如程序定义的错误)。
当发生异常情况时,会引发异常。术语引发表示当前程序执行停止,并且控制重定向到最近适用的 catch 子句。如果没有适用的 catch 子句,则程序执行结束。
JDBC 异常处理与 Java 异常处理非常相似,但对于 JDBC,您将要处理的最常见的异常是 java.sql.SQLException.
SQLException Methods
SQLException 可以在驱动程序和数据库中同时发生。当发生此类异常时,SQLException 类型的对象将传递给 catch 子句。
传递的 SQLException 对象具有以下方法,可用于检索有关异常的其他信息 −
Method |
Description |
getErrorCode( ) |
获取与异常关联的错误号。 |
getMessage( ) |
获取 JDBC 驱动程序的错误消息以获取由驱动程序处理的错误,或获取数据库错误的 Oracle 错误编号和消息。 |
getSQLState( ) |
获取 XOPEN SQLstate 字符串。对于 JDBC 驱动程序错误,该方法不返回有用的信息。对于数据库错误,返回五位 XOPEN SQLstate 代码。此方法可以返回 null。 |
getNextException( ) |
获取异常链中的下一个异常对象。 |
printStackTrace( ) |
打印当前异常或可抛出内容,并将其回溯到标准错误流。 |
printStackTrace(PrintStream s) |
将此可抛出内容及其回溯打印到您指定的打印流。 |
printStackTrace(PrintWriter w) |
将此可抛出内容及其回溯打印到您指定的打印写入器。 |
通过利用异常对象中可用的信息,您可以捕获异常并适当地继续您的程序。以下是 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.
}
Example
研究以下示例代码以了解 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:\>