Java——異常處理,數據庫連接


在學習數據庫連接時看到try(){}結構,查了一下寫在這里:

 1 import java.sql.Connection;
 2 import java.sql.DriverManager;
 3 import java.sql.ResultSet;
 4 import java.sql.Statement;
 5 
 6 /**
 7  * Created by BoGummyYoung on 2017/4/6.
 8  */
 9 public class ConnMySql
10 {
11     public static void main(String[] args) throws Exception
12     {
13         //1.加載驅動,使用反射知識,現在記住這么寫
14         Class.forName("com.mysql.jdbc.Driver");
15         try(
16                 //2.使用DriverManager獲取數據庫連接
17                 //其中返回的Connection就代表了Java程序和數據庫的連接
18                 //不同數據庫的URL寫法需要查驅動文檔,用戶名、密碼由DBA分配
19                 Connection conn = DriverManager.getConnection(
20                         "jdbc:mysql://localhost:3306/select_test"
21                         ,"root","bogummy");
22                 //3.使用Connection來創建一個Statement對象
23                 Statement stmt = conn.createStatement();
24                 //4.執行SQL語句
25                 /*
26                 Statement 有三種執行SQL語句的方法:
27                 1.execute()可執行任何SQL語句——返回一個boolean值
28                   如果執行后第一個結果是ResultSet,則返回true,否則返回false
29                 2.executeQuery()執行select語句——返回查詢到的結果集
30                 3.executeUpdate()用於執行DML語句——返回一個整數
31                   代表被SQL語句影響的記錄條數
32                  */
33                 ResultSet rs = stmt.executeQuery("select s.*, teacher_name"
34                 +" from student_table s , teacher_table t"
35                 +" where t.teacher_id = s.java_teacher"))
36         {
37             //ResultSet有一系列的getXxx(列索引 | 列名)方法,用於獲取記錄指針
38             //指向行、列特定的值,不斷地使用next()將記錄指針下移一行
39             //如果移動之后記錄指針依然指向有效行,則next()方法返回true
40             while(rs.next())
41             {
42                 System.out.println(rs.getInt(1) + "\t"
43                      + rs.getString(2) + "\t"
44                      + rs.getString(3) + "\t"
45                      + rs.getString(4) + "\t");
46             }
47         }
48     }
49 }
View Code

基本的異常處理:

 1 try
 2 {
 3        //業務實現代碼
 4        ...
 5 }
 6 catch (Exception e)
 7 {
 8        alert 輸入不合法
 9        goto retry
10 } 

如果執行try塊里的業務邏輯代碼時出現異常,系統自動生成一個異常對象,該異常對象被提交給Java運行時環境,這個過程被稱為拋出(throw)異常。

    通常情況下,如果try塊被執行一次,則try塊被執行一次,則try塊后只有一個catch塊會被執行,絕不可能有多個catch塊被執行,除非在循環中使用了continue開始下一次循環,下一次循環又重新運行了try塊,這才可能導致多個catch塊被執行。

     Java把所有非正常情況分成兩種:異常(Exception)和錯誤(Error),它們都集成Throwable父類。

      Error錯誤:一般是與虛擬機相關的問題,如系統崩潰、虛擬機錯誤、動態鏈接失敗等,這種錯誤無法恢復或不可能補貨,將導致應用程序終端,不會使用catch塊來補貨Error對象。

      回收資源:try塊里打開了一些物理資源(例如數據庫連接、網絡連接和磁盤文件等),這些物理資源都必須顯示回收。

      1、finally回收

      

 1 try
 2 {
 3      //業務實現代碼
 4 }
 5 catch (SubException e)
 6 {
 7      //異常處理塊1
 8 }
 9 catch (SubException2 e)
10 {   
11      //異常處理塊2
12 }
13 ......
14 finally
15 {
16     //資源回收塊
17 }

 

      2、Java7自動關閉資源的try語句

 try關鍵字后面緊跟一隊圓括號,圓括號可以聲明、初始化一個或多個資源,此處的資源值得是那些必須在程序結束時顯示關閉的資源(比如數據庫連接、網絡連接等),try語句在該語句結束時自動關閉這些資源。

try()
{
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM