[英]How to throw a data exception if an element does not exist in Array?
所以我有一個字符串數組列表,我目前正在使用一種方法,這樣用戶可以通過輸入索引號來訪問和返回數組列表中的某些元素。
如果他們嘗試訪問不在數組中的內容的索引號,我想拋出自己的數據異常。 在一分鍾,它拋出了索引超出范圍的異常。 目前,我正在使用下面的if語句,但是它不起作用! 我怎樣才能做到這一點?
if (set.get(index) == null) {
throw new DataException("Record does not exists!");
}
嘗試從ArrayList訪問越界索引將始終拋出IndexOutOfBounds異常。 要解決此問題,您有兩個選擇。 您可以在確定元素存在之前避免要求該元素,否則可以捕獲錯誤。
要捕獲該錯誤,您可以使用try-catch塊,如下所示:
try {
someVariable = set.get(index);
} catch(Exception e) {
throw new DataException(...);
}
為了避免首先觸發錯誤,您可以確保索引位於ArrayList的范圍內,如下所示:
if(index < 0 || index >= set.size()) {
throw new DataException(...);
}
您只需要測試索引既不是負數也不是大於或等於列表大小:
if ( index < 0 || index >= list.size() ) {
throw new DataException("Record does not exists!");
}
由於List.get(int index)
javadoc保持不變:
拋出:
IndexOutOfBoundsException-如果索引超出范圍(索引<0 ||索引> = size())
現在,我不確定將IndexOutOfBoundsException
包裝在DataException
是個好主意。
訪問數組的邊界索引是編程錯誤。
IndexOutOfBoundsException
很好地傳達了這個想法,而
throw new DataException("Record does not exists!");
可以理解為客戶端錯誤。
將條件更改為:
if(index < 0 || index >= set.size()){
...
}
if (index < 0 || index >= set.size() || set.get(index) == null) {
throw new DataException("Record does not exists!");
}
在執行get()之前,請測試索引是否在ArrayList中,以避免IndexOutOfBoundsException。 如果前兩個條件中的任何一個為true,則不會達到get()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.