Lỗi chưa xử lý ngoại lệ khi cài sql server năm 2024

Ngoại lệ (Exception) là một tình trạng bất thường xảy ra trong khi thực thi chương trình và Xử lý ngoại lệ (Exception Handling) giúp bạn xử lý các điều kiện bất thường này.

Lớp SQLException trong JDBC

Trong JDBC, lớp java.sql.SQLException cung cấp rất nhiều phương thức để xử lý các ngoại lệ xảy ra cho cả Driver và Database. Đây là một trong các lớp cơ bản của JDBC, và chịu trách nhiệm về xử lý các ngoại lệ.

Khi một điều kiện bất thường xuất hiện, một Exception được ném. Khái niệm ném (thrown) ở đây nghĩa là sự thực thi chương trình hiện tại dừng lại và luồng điều khiển được chuyển tiếp tới mệnh đề catch gần nhất. Nếu không có mệnh đề catch nào, thì sự thực thi chương trình kết thúc.

Dưới đây là các phương thức của đối tượng SQLException để cung cấp thông tin về Exception:

1. public String getSQLState()

Lấy SQL State cho đối tượng SQLException này. Với một lỗi liên quan tới Driver, thì phương thức này không trả về thông tin hữu ích nào. Tuy nhiên, với một lỗi liên quan tới Database, một code gồm 5 chữ số miêu tả về XOPEN SQLstate được trả về. Phương thức này có thể trả về null.

2. public int getErrorCode()

Trả về số hiệu lỗi liên kết với Exception đó.

3. public SQLException getNextException()

Lấy đối tượng Exception tiếp theo trong Exception Chain được thiết lập bởi phương thức setNextException.

Quảng cáo

4. public void setNextException(SQLException ex)

Thêm một đối tượng SQLException tới phần cuối của Chain.

5. public Iterator iterator()

Trả về một iterator qua dãy các SQLException. Iterator này sẽ lặp qua mỗi SQLException và nguyên nhân gây ra ngoại lệ đó.

6. public void printStackTrace()

In ngoại lệ hiện tại và backtrace của nó tới luồng lỗi chuẩn (Standard Error Stream).

7. public void printStackTrace(PrintStream s)

In ngoại lệ này và backtrace của nó tới Print Stream bạn đã xác định.

Bằng việc lợi dụng thông tin từ các phương thức trên, bạn có thể bắt một Exception và tiếp tục thực thi chương trình một cách thích hợp. Dưới đây là form chung của một khối try-catch-finally:

try { // Phan code ma ban nghi ngo rang se xuat hien loi nen dat o day!!! } catch(Exception ex) { // Ban xu ly ngoai le tai day } finally { // Phan code nay luon duoc thuc thi }

Quảng cáo

Ví dụ về xử lý ngoại lệ trong JDBC

Dưới đây là ví dụ minh họa cách sử dụng của khối try-catch-finally và cách sử dụng các phương thức trên để xử lý ngoại lệ.

package com.vietjack.jdbc; //Buoc 1: Ban can inport cac package can thiet import java.sql.*; public class ViDuJDBC { // Ten cua driver va dia chi URL cua co so du lieu static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost/sinhvien"; // Ten nguoi dung va mat khau cua co so du lieu static final String USER = "root"; static final String PASS = "123456"; public static void main(String[] args) { Connection conn = null; try{

  // Buoc 2: Dang ky Driver
  Class.forName("com.mysql.jdbc.Driver");
  // Buoc 3: Mo mot ket noi
  System.out.println("Dang ket noi toi co so du lieu ...");
  conn = DriverManager.getConnection(DB_URL,USER,PASS);
  // Buoc 4: Thuc thi truy van
  System.out.println("Tao cac lenh truy van SQL ...");
  Statement stmt = conn.createStatement();
  String sql;
  sql = "SELECT mssv, ho, ten, diemthi FROM sinhvienk60";
  ResultSet rs = stmt.executeQuery(sql);
  // Buoc 5: Lay du lieu tu Result Set
  while(rs.next()){
     // Lay du lieu boi su dung ten cot
     int mssv  = rs.getInt("mssv");
     int diemthi = rs.getInt("diemthi");
     String ho = rs.getString("ho");
     String ten = rs.getString("ten");
     // Hien thi cac gia tri
   System.out.print("\nMSSV: " + mssv);
   System.out.print("\nHo: " + ho);
   System.out.println("\nTen: " + ten);
   System.out.print("\nDiem Thi: " + diemthi);
   System.out.print("\n=================");
  }
  // Buoc 6: Don sach moi truong va giai phong resource
  rs.close();
  stmt.close();
  conn.close();
}catch(SQLException se){
  // Xu ly cac loi cho JDBC
  se.printStackTrace();
}catch(Exception e){
  // Xu ly cac loi cho Class.forName
  e.printStackTrace();
}finally{
  // Khoi finally duoc su dung de dong cac resource
  try{
     if(conn!=null)
        conn.close();
  }catch(SQLException se){
     se.printStackTrace();
  }// Ket thuc khoi finally
}// Ket thuc khoi try System.out.println("\nVietJack chuc cac ban hoc tot!"); }// Ket thuc main }// Ket thuc ViDuJDBC

Sao chép và dán ví dụ trên trong ViDuJDBC.java, sau đó biên dịch và thực thi chương trình Java trên. Nếu không có vấn đề gì xảy ra, chương trình trên sẽ cho kết quả như sau. Nếu có bất kỳ lỗi nào, thì chương trình sẽ bắt và hiển thị thông báo tương ứng về lỗi đó.

Bạn thử lại ví dụ trên bởi cung cấp sai tên database hoặc username hoặc sai password, sau đó kiểm tra kết quả. Chẳng hạn, khi mình cung cấp mật khẩu là 123455, thì khi chạy chương trình trên sẽ cho kết quả dạng:

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Lỗi chưa xử lý ngoại lệ khi cài sql server năm 2024

Lỗi chưa xử lý ngoại lệ khi cài sql server năm 2024

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.