如何正确捕获 Glide 异常?

Niz*_*rif 6 filenotfoundexception android-image android-glide

我使用 Glide 4.x 并在 URL 返回 404 时收到 FileNotFoundException。我尝试使用 RequestListener 捕获异常。但它并不是缓存这个异常。

GlideApp.with(getApplicationContext()).load(URL).placeholder(R.mipmap.ic_launcher).listener(new RequestListener<Drawable>() {
                            @Override
                            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                                System.out.println("MainActivity.onLoadFailed"+e.getMessage());
                                return false;
                            }

                            @Override
                            public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                                System.out.println("MainActivity.onResourceReady");
                                return false;
                            }
                        }).error(R.mipmap.ic_launcher).transform(new CircleCrop()).into(profileImage);
Run Code Online (Sandbox Code Playgroud)

登录如下:

2019-03-20 17:48:07.134 32233-32233/com.zyta.zflikz W/Glide: Load failed for https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo大小为[183x183]的.jpg 类com.bumptech.glide.load.engine.GlideException:无法加载资源有2个原因:java.io.FileNotFoundException(https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/ AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo.jpg ) java.io.FileNotFoundException( https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/ photo.jpg ) 调用 GlideException#logRootCauses( String)了解更多详细信息原因(3个之一):类com.bumptech.glide.load.engine.GlideException:获取数据失败,类java.io.InputStream,REMOTE有1个原因:java.io.FileNotFoundException(https: //lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo.jpg ) 调用 GlideException#logRootCauses(String) 了解更多详细信息 原因(1 of 1):类 java.io.FileNotFoundException:https ://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo.jpg 原因(3 中的 2):类 com.bumptech.glide.load.engine.GlideException:获取数据失败,类java.io.InputStream,远程有1个原因:java.io.FileNotFoundException(https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo.jpg)调用GlideException#logRootCauses(字符串)了解更多详细信息原因(1个):类java.io.FileNotFoundException:https: //lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo.jpg 原因(3 / 3) ): 类 com.bumptech.glide.load.engine.GlideException: 失败的 LoadPath{StringUri->Object->Drawable},本地原因 (1 of 2): 类 com.bumptech.glide.load.engine.GlideException: 失败的 DecodePath {StringUri->Drawable->Drawable} 原因(2 of 2):类 com.bumptech.glide.load.engine.GlideException:解码路径失败{StringUri->Bitmap->Drawable} 2019-03-20 17:48:07.135 32233-32233/com.zyta.zflikz I/Glide:根本原因(1 of 2)java.io.FileNotFoundException:https: //lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo .jpg 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:251) 在 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210) 在 com.android.okhttp.internal .huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:26) 在 com.bumptech.glide.load.data.HttpUrlFetcher.loadDataWithRedirects(HttpUrlFetcher.java:106) 在 com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher) .java:59) 在 com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62) 在 com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302) 在 com.凹凸技术.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:272)在com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:233)在java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1167) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 在 java.lang.Thread.run(Thread.java:764) 在 com.bumptech.glide.load.engine .executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:446) 2019-03-20 17:48:07.137 32233-32233/com.zyta.zflikz I/Glide:根本原因(2 / 2)java.io。文件未找到异常: https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAAAAI/AAAAAAAAAAA/ACLGyWByUX_zz0_9075kpV4xIdPmN_dtNQ/s96-c/photo.jpg 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:251) 在 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210) 在 com.android.okhttp.internal .huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:26) 在 com.bumptech.glide.load.data.HttpUrlFetcher.loadDataWithRedirects(HttpUrlFetcher.java:106) 在 com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher) .java:59) 在 com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62) 在 com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302) 在 com.凹凸技术.glide.load.engine.DecodeJob.onDataFetcherFailed(DecodeJob.java:397)在com.bumptech.glide.load.engine.SourceGenerator.onLoadFailed(SourceGenerator.java:119)在com.bumptech.glide.load.data。 HttpUrlFetcher.loadData(HttpUrlFetcher.java:65)在com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)在com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java: 302) 在 com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:272) 在 com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:233) 在 java.util.concurrent .ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 在 java.lang.Thread.run(Thread.java:764) 在 com.bumptech。 glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:446) 2019-03-20 17:48:07.138 32233-32233/com.zyta.zflikz I/System.out: MainActivity.onLoadFailedFailed加载资源

如果有人对此有修复或替代解决方案,请告诉我。

Niz*_*rif 3

此问题已通过使用Glidein local Image from Drawablein error 方法进行另一次调用来解决。

Glide.with(mContext)
    .load(url)
    .placeholder(R.drawable.YourIconForPlaceholder)
    .error(R.drawable.YourIconWhenfailed)
    .into(imageView);
Run Code Online (Sandbox Code Playgroud)