2011-11-16 28 views
8

Tôi có một số mã trong một trong các ứng dụng Android của tôi bắt SQLException, nhưng gần đây tôi thấy rằng nó không bắt được SQLiteException. Rõ ràng, SQLiteException là một đứa trẻ của SQLException, vậy tại sao nó không bị bắt? Đây là một số mã tôi đang sử dụng.Tại sao SQLException không nhận được SQLiteExcpetion?

try { 
    ... // something here that will throw an SQLiteException 
} catch (SQLException e) { 
    e.printStackTrace(); 
} 

Giả định của tôi có đúng là tôi nên bắt SQLiteException không?

Nếu có vấn đề gì cả, tôi đang sử dụng mã này không phải bên trong Hoạt động, nhưng bên trong lớp mở rộng lớp Application.

Là một lưu ý phụ, tôi đã thêm catch(Exception e){} bổ sung để xem điều đó có hiệu quả hay không và nó thực sự hoạt động như mong đợi.

+1

một câu hỏi khá thú vị thực sự ... vì nó thực sự là một phân lớp của SQLException: http://developer.android.com/reference/android/database/sqlite/SQLiteException.html –

Trả lời

16

Có hai loại SQLException:

android.database.SQLException 
java.sql.SQLException 

chắc chắn rằng bạn đang sử dụng đầu tiên không phải là thứ hai.

+2

Cảm ơn, tôi đã thực sự sử dụng java.sql.SQLException. Hãy coi chừng Eclipse! – Pzanno

+0

Tôi thích mùi được học vào buổi chiều. Mùi như ... * facepalm learning *. –

3

Giả định của tôi có đúng là tôi nên bắt SQLiteException không?

Bạn đang nói về java.sql.SQLException hoặc android.database.SQLException?

SQLiteException kéo dài android.database.SQLException. Kiểm tra hàng nhập của bạn.

+0

Bạn đã đúng, tôi đã bắt java .sql.SQLException, cảm ơn. – Pzanno

Các vấn đề liên quan