Artikelverzeichnis
Szene
Bei Verwendung Dio
ist die Netzwerkanforderung möglicherweise abnormal und muss mit Try Catch abgefangen werden.
Der Erfassungscode lautet wie folgt
try {
var response = await _dio!.get<T>("/list", queryParameters: {
"key":"value"});
print(response.data);
} catch (e) {
var exception = e as exception;
print(exception);
}
Die folgenden Ausnahmeinformationen werden während der Netzwerkanfrage angezeigt:
[VERBOSE-2:ui_dart_state.cc(198)] Unhandled Exception: type '_TypeError' is not a subtype of type 'Exception' in type cast
Lösung
Da das abgefangene e ist dynamic
, kann es sich um eine Ausnahme oder um einen Fehler handeln, sodass es nicht umgewandelt werden kann und für diese beiden Typen unterschiedliche Vorgänge ausgeführt werden müssen.
Wir können Ausnahmen separat behandeln oder bei der einheitlichen Verarbeitung zuerst den Typ beurteilen.
Separat handhaben (empfohlen)
try{
} on Exception catch (e){
/// 捕获的类型是Exception
} on Error catch (e){
/// 捕获的类型是Error
}
Urteilstyp
try{
...
} catch (e){
if (e is Exception){
/// 处理Exception
...
} else if (e is Error){
/// 处理Error
...
}
}