我目前正在導致我無法跟蹤的IndexOutOfBoundsException
。我有一個微調器,由String[]
填充。取決於設備的製造商,String[] (and hence Spinner object)
將具有3個值或1個值。無法捕獲ArrayIndexOutOfBoundsException
我將保存的微調器選擇作爲int
存儲在SharedPreferences
中,並在創建Activity
時加載它。
在Spinner只有1個值的情況下,如果它加載了SharedPreferences
,並且保存的值是2
,我將該微調器設置爲選擇項目位置2,它會崩潰(明顯)。我試圖抓住這個例外,然後我可以將它設置爲0
,但我似乎無法捕捉到那Exception
。
的代碼結構是這樣:
Populate Spinner according to something
Load up Saved Preferences
Check some value of saved preferences
try{
Set Spinner with that Preference
}
catch(Exception e)
{
Set Spinner with default value of 0
}
堆棧跟蹤:
10-18 12:49:32.885: E/AndroidRuntime(15327): FATAL EXCEPTION: main 10-18 12:49:32.885: E/AndroidRuntime(15327): java.lang.IndexOutOfBoundsException: Invalid index 2, size is 1 10-18 12:49:32.885: E/AndroidRuntime(15327): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) 10-18 12:49:32.885: E/AndroidRuntime(15327): at java.util.ArrayList.get(ArrayList.java:304) 10-18 12:49:32.885: E/AndroidRuntime(15327): at android.widget.ArrayAdapter.getItem(ArrayAdapter.java:337) 10-18 12:49:32.885: E/AndroidRuntime(15327): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:390)
是否有可能將異常拋出try塊?無法分辨您是否在此處發佈了這些內容。 – neurite
可以肯定的是,這個錯誤是由於使用一個超出其可用選項的索引來設置微調器造成的,因爲當我刪除它時,一切都很好。我甚至包裝了整個onCreate()(從中調用這段代碼)來捕獲異常,但它仍然無法捕捉它。 – micnguyen
有趣。一個級別的異常是Java Throwable。不知道是否允許你抓住它。 – neurite