Ce face RangeError
RangeError este un ArgumentError pentru numere în afara limitelor. Îl primești când accesezi lista[10] într-o listă de 3 elemente sau apelezi substring cu poziții greșite. Are câmpurile start, end (limitele) și invalidValue.
Metodele statice te ajută să verifici argumentele în funcțiile tale. RangeError.checkValueInInterval(v, min, max, 'nume') aruncă dacă v nu este între min și max (inclusiv) și altfel returnează v. RangeError.checkValidIndex(i, colectie) verifică dacă i este un index valid (0 ≤ i < length) pentru o colecție.
Există și RangeError.checkNotNegative și checkValidRange, pentru intervale de poziții.
Parametri
| Parametru | Descriere |
|---|---|
value / index |
Valoarea verificată. |
minValue, maxValue |
Limitele permise, inclusiv. |
indexable |
Colecția (cu length) pentru care se verifică indexul. |
name, message |
Numele parametrului și mesajul (opționale). |
Ce returnează
Metodele de verificare returnează valoarea, dacă este validă.
Exemple
Exemplul 1: RangeError din liste și texte
void main() {
var orase = ['Iași', 'Cluj', 'Brașov'];
try {
print(orase[3]);
} on RangeError catch (e) {
print(e.message);
print('valoare ${e.invalidValue}, limite ${e.start}..${e.end}');
}
try {
print('Iași'.substring(2, 9));
} on RangeError catch (e) {
print(e);
}
}
Rezultat
Invalid value
valoare 3, limite 0..2
RangeError (end): Invalid value: Not in inclusive range 2..4: 9
Exemplul 2: Verificarea argumentelor
void puneNota(Map<String, int> catalog, String elev, int nota) {
catalog[elev] = RangeError.checkValueInInterval(nota, 1, 10, 'nota');
}
String loc(List<String> clasament, int pozitie) {
RangeError.checkValidIndex(pozitie, clasament, 'pozitie');
return clasament[pozitie];
}
void main() {
var catalog = <String, int>{};
puneNota(catalog, 'Ana', 9);
try {
puneNota(catalog, 'Mihai', 11);
} on RangeError catch (e) {
print(e);
}
print(catalog);
var podium = ['Ioana', 'Radu', 'Ana'];
print(loc(podium, 0));
try {
loc(podium, 3);
} on RangeError catch (e) {
print(e);
}
}
Rezultat
RangeError (nota): Invalid value: Not in inclusive range 1..10: 11
{Ana: 9}
Ioana
RangeError (pozitie): Index out of range: index should be less than 3: 3
Greșeli frecvente
- Parcurgi o listă cu
i <= lista.length. Ultimul index valid estelength - 1; condiția corectă estei < lista.length.
Comenzi înrudite
ArgumentError: Eroarea aruncată când o funcție primește un argument nepermis; ArgumentError.value include și valoarea greșită.Error: Clasa de bază pentru greșelile de programare (index greșit, argument invalid); stackTrace arată unde a fost aruncată.String.substring: substring extrage o bucată din text între două poziții; operatorul [] dă caracterul de la o poziție.List.operator[]: lista[i] citește elementul de pe poziția i; lista[i] = x îl înlocuiește.