4
我有以下兩種方法捕捉錯誤輸入例外
方法1
public String[] getSongIds(String whereClause)
{
String countQuery = "SELECT songid FROM TABLE_INDEX WHERE " + whereClause;
Cursor cursor = db.rawQuery(countQuery, null);
int cursorSize = cursor.getCount();
int[] songIds = new int[cursorSize];
int count=0;
if (cursor != null) {
if (cursor.moveToFirst()){
do{
songIds[count] = cursor.getInt(cursor.getColumnIndex("songid"));
count++;
}while(cursor.moveToNext());
}
}
cursor.close();
db.close();
return getSongTitles(songIds);
}
方法2
private String[] getSongTitles(int[] songIds) {
/some algorithm
return songTitles;
}
方法1是從不同的封裝調用。方法1對SQLite數據庫運行查詢並調用第二種方法。我需要通過執行方法1中的SQLite查詢來捕獲異常。最好返回(-1)或其他東西,以便我可以從最初調用這些方法的包中向用戶顯示消息。所以我想方法1,以避免調用方法2,如果有(錯誤的輸入)SQL異常,而不是返回一些東西回到另一個包
ps我看到了一些方法來捕捉這個異常,但不滿意他們的方法。想知道什麼是處理這個問題的最佳方法。歡呼聲
只有一個問題。如果我想爲用戶創建一個android Toast(彈出消息),請他們重新輸入他們的輸入,會怎麼樣?這是否在調用getSongIds的人的catch塊中? – Achilles
@Achilles不一定,通常你想要調用UI組件來顯示屏幕上的東西,以保持業務邏輯和UI邏輯分離的方法 –
無論誰調用'getSongIds'。業務邏輯和數據庫訪問之間應該有一個明確的分離,即表示組件。 –