Flutter-Solve Versuchen Sie, eine Ausnahme abzufangen: Der Typ „_TypeError“ ist kein Untertyp des Typs „Exception“ in der Typumwandlung

Szene

Bei Verwendung Dioist 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
		...
	}
} 

Supongo que te gusta

Origin blog.csdn.net/adojayfan/article/details/128036972
Recomendado
Clasificación