Ce face ArgumentError
ArgumentError semnalează că cine a apelat funcția i-a dat o valoare greșită: o vârstă negativă, un text gol unde trebuia un nume. Este o greșeală a codului apelant, deci este un Error, nu o excepție.
ArgumentError(mesaj, nume) primește mesajul și, opțional, numele parametrului. ArgumentError.value(valoare, nume, mesaj) păstrează și valoarea greșită în câmpul invalidValue, iar toString() o afișează: Invalid argument (varsta): Nu poate fi negativă: -3. Câmpurile sunt message, name și invalidValue.
Pentru numere în afara unui interval există subclasa specializată RangeError.
Parametri
| Parametru | Descriere |
|---|---|
message |
Descrierea problemei. |
name |
Numele parametrului. |
value |
La ArgumentError.value: valoarea primită. |
Ce returnează
Un obiect ArgumentError.
Exemple
Exemplul 1: Cele două constructoare
void main() {
var e1 = ArgumentError('Numele nu poate fi gol', 'nume');
print(e1);
print(e1.name);
var e2 = ArgumentError.value(-3, 'varsta', 'Nu poate fi negativă');
print(e2);
print(e2.invalidValue);
print(e2.message);
}
Rezultat
Invalid argument(s) (nume): Numele nu poate fi gol
nume
Invalid argument (varsta): Nu poate fi negativă: -3
-3
Nu poate fi negativă
Exemplul 2: Validarea parametrilor unei funcții
double pretCuReducere(double pret, int procent) {
if (pret < 0) throw ArgumentError.value(pret, 'pret', 'Prețul nu poate fi negativ');
if (procent < 0 || procent > 100) {
throw ArgumentError.value(procent, 'procent', 'Trebuie să fie între 0 și 100');
}
return pret * (100 - procent) / 100;
}
void main() {
print(pretCuReducere(200, 25));
for (var (pret, procent) in [(-5.0, 10), (100.0, 150)]) {
try {
pretCuReducere(pret, procent);
} on ArgumentError catch (e) {
print('${e.name} = ${e.invalidValue}: ${e.message}');
}
}
}
Rezultat
150.0
pret = -5.0: Prețul nu poate fi negativ
procent = 150: Trebuie să fie între 0 și 100
Greșeli frecvente
- Inversezi ordinea la
ArgumentError.value: primul este valoarea, apoi numele, apoi mesajul. - Arunci
ArgumentErrorpentru date venite de la utilizator. Acolo datele greșite sunt normale; aruncă oFormatExceptionsau o excepție proprie.
Comenzi înrudite
ArgumentError.checkNotNull: Verifică dacă o valoare nu este null; o returnează ca tip nenul sau aruncă ArgumentError.RangeError: Eroarea pentru o valoare numerică în afara intervalului permis, de exemplu un index greșit într-o listă.Error: Clasa de bază pentru greșelile de programare (index greșit, argument invalid); stackTrace arată unde a fost aruncată.StateError: Eroarea aruncată când o operație nu are sens în starea curentă a obiectului, de exemplu first pe o listă goală.