Ce face UnsupportedError
UnsupportedError înseamnă că obiectul nu acceptă deloc operația. Cel mai des îl vezi la colecțiile nemodificabile: add pe o listă const sau pe List.unmodifiable aruncă Unsupported operation: Cannot add to an unmodifiable list. Tot el apare la toInt() pe NaN sau infinit.
UnimplementedError este o subclasă folosită ca „semn de șantier”: o metodă declarată, dar nescrisă încă. IDE-urile generează des throw UnimplementedError(); în corpul metodelor noi. Nu trebuie să rămână în codul final.
Ambele au câmpul message.
Parametri
| Parametru | Descriere |
|---|---|
message |
Descrierea operației nepermise sau neimplementate. |
Ce returnează
Un obiect eroare.
Exemple
Exemplul 1: Colecții care nu pot fi modificate
void main() {
const zile = ['luni', 'marți', 'miercuri'];
try {
zile.add('joi');
} on UnsupportedError catch (e) {
print(e.message);
}
var copie = [...zile, 'joi'];
print(copie);
try {
double.nan.toInt();
} on UnsupportedError catch (e) {
print(e);
}
}
Rezultat
Cannot add to an unmodifiable list
[luni, marți, miercuri, joi]
Unsupported operation: Infinity or NaN toInt
Exemplul 2: Metode neimplementate încă
abstract class Plata {
String plateste(double suma);
}
class PlataCard implements Plata {
@override
String plateste(double suma) => 'Plătit $suma lei cu cardul';
}
class PlataCrypto implements Plata {
@override
String plateste(double suma) => throw UnimplementedError('Plata crypto vine în versiunea 2');
}
void main() {
for (Plata p in [PlataCard(), PlataCrypto()]) {
try {
print(p.plateste(99.9));
} on UnimplementedError catch (e) {
print('Indisponibil: ${e.message}');
}
}
}
Rezultat
Plătit 99.9 lei cu cardul
Indisponibil: Plata crypto vine în versiunea 2
Greșeli frecvente
- Încerci să modifici o listă primită din
const,List.unmodifiablesauMap.unmodifiable. Fă o copie ([...lista],toList()) și modifică copia.
Comenzi înrudite
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ă.List.from: Creează o listă nouă cu elementele unei colecții; of verifică tipul la compilare, from la rulare.const: Declară o constantă calculată la compilare; obiectele const sunt complet imuabile și partajate.