- 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:///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:\>
廣告