簡介
只能在定義的範圍內訪問數組元素和集合成員。此錯誤有以下的原因和解決方法。
VB中的數組越界
引用了不存在的數組元素.
下標可能比下標範圍大或小,或是在應用程式中這一邊的數組沒有指定範圍。檢查數組的聲明以確認其上界和下界。若使用的是重新指定範圍的數組,應使用 UBound 和 LBound 函式來決定數組訪問。如果索引指定為變數,應檢查變數名的拼寫。
聲明數組時沒有指定元素的數目。例如,下列的代碼就會導致此錯誤:
Dim MyArray() As Integer
MyArray(8) = 234 ' 導致錯誤 9。
Visual Basic 並不會將沒有指定範圍的數組自動設為 0 – 10。相反必須使用 Dim 或 ReDim 來指定數組中元素的數目。
引用了不存在的集合成員。
試著使用 For Each...Next 結構代替指定元素下標。
使用速寫形式的下標,結果指定了錯誤的元素。
例如,當在集合上使用 ! 運運算元時,! 自動指定了一個鍵。例如 object!keyname.value 和 object.item(keyname).value 是一樣的。在此例中,集合中如果 keyname 表示一個錯誤鍵,錯誤就會產生。若要改進此錯誤,在集合對象中使用正確的鍵名稱或索引。
詳細信息,可選取有問題的項目,並按下 F1 鍵。
C++中的下標越界
試圖訪問數組中不存在的元素,使用標準庫vector模板和string類的at函式可以提供下標檢查,如果越界則拋出異常.
靜態數組動態數組都可能造成越界.
如:
int A[20];
cout<<A[-1];//A[-1]不存在
cout<<A[20];//A[20]也不存在,C++中,數組下標的最大值比數組大小小1.int *B;
B=new int[20];//如果new操作失敗,或者沒有這一句,對B數組的訪問都會失敗.平台不同,造成的後果不一定相同.