2011-01-11 117 views
4

我做了一個SingleItemAdapter擴展ArrayAdapter,這個自定義的適配器用於ListViewgetView()不能拋出異常

在這個SingleItemAdapter,我做了一些數據庫的東西,所以我想拋出異常在getView()方法這是初始化的GUI。

public View getView(int position,View convertView,ViewGroup parent)拋出異常 會得到Exception Exception is not compatible with throws clause in ArrayAdapter.getView(int, View, ViewGroup)

ArrayAdapter,BaseAdapter,適配器不會拋出異常,爲什麼?

+1

這個問題勉強可讀。請嘗試清理並重新編輯。 – EboMike 2011-01-11 02:14:26

回答

6

Java中有兩種不同類型的異常。檢查異常要求通過方法聲明或try/catch塊在編譯時處理異常。運行時異常沒有這個要求。

您無法爲重寫的方法聲明添加新類型的Exception,因此您需要捕獲異常並在內部處理它或使用運行時異常。

聽起來就像你的情況,你可能想捕捉數據庫異常,並在你的代碼中很好地處理它們。也許,如果數據庫訪問失敗,您可以顯示解釋問題的錯誤消息。

如果您只是拋出一個運行時異常,那麼用戶很可能會得到一個強制關閉屏幕,這對UX視角來說是一個相當糟糕的選擇。

4

如果重寫方法不引發異常,則不能從重寫的方法中拋出異常。你打破了壓倒一切的地步。而不是拋出異常,你必須處理它。

0

ArrayAdapter的目的是使數組適合查看。它應該已經從數據庫中提取。如果視圖的填充引發異常,這是沒有意義的。