You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The onError handler of DioCacheInterceptor is not able to hand over error handling to the next interceptor in the pipeline. After the onError handler is finished an exception occurs that is not cought by the subsequent interceptor(s).
Please consider the following example:
late CacheOptions cacheOptions;
late CacheStore cacheStore;
Dio dio = Dio(BaseOptions(
receiveTimeout: const Duration(milliseconds: 2000),
connectTimeout: const Duration(milliseconds: 2000),
sendTimeout: const Duration(milliseconds: 2000),
receiveDataWhenStatusError: true,
));
getTemporaryDirectory().then((dir) async {
cacheStore = FileCacheStore(dir.path);
cacheOptions = CacheOptions(
store: cacheStore,
// We will use cache functionality on demand
policy: CachePolicy.noCache,
);
dio.interceptors.addAll([
DioCacheInterceptor(
options: cacheOptions,
),
InterceptorsWrapper(
onError: (err, handler) {
debugPrint('CAUGHT error: $err');
handler.resolve(
Response(
requestOptions: err.requestOptions,
statusCode: 500,
),
);
},
),
]);
Response resp = await dio.get('https://httpbin.org/delay/10');
debugPrint(resp.statusCode.toString());
}
I don't use QueuedInterceptor because of concurrency concern. There's no need to stream each request because of this package.
That said, dio should follow interceptor chain setup...
The onError handler of DioCacheInterceptor is not able to hand over error handling to the next interceptor in the pipeline. After the onError handler is finished an exception occurs that is not cought by the subsequent interceptor(s).
Please consider the following example:
Changing this line to
fixes this problem (I can create a PR if interested).
I have also informed the Dio project about this behavior here.
Is there a particular reason why you chose to extend "Interceptor" instead of "QueuedInterceptor"?
The text was updated successfully, but these errors were encountered: