Когда я разрабатывал приложение, случайно передал неверный URL Glide.Это заставило мое приложение зависать.
Совместное использование моего кода:
val file = requestManager.downloadOnly().load(imageUrl).listener(requestListener).submit().get()
Совместное использование журнала аварий:
java.lang.Error: java.util.concurrent.ExecutionException: com.bumptech.glide.load.engine.GlideException: Failed to load resource
There was 1 cause:
java.io.FileNotFoundException(https://imageSamples/sampleimage.jgp)
call GlideException#logRootCauses(String) for more detail
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1139)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:760)
Caused by: java.util.concurrent.ExecutionException: com.bumptech.glide.load.engine.GlideException: Failed to load resource
There was 1 cause:
java.io.FileNotFoundException(https://imageSamples/sampleimage.jgp)
call GlideException#logRootCauses(String) for more detail
at com.bumptech.glide.request.RequestFutureTarget.doGet(RequestFutureTarget.java:205)
at com.bumptech.glide.request.RequestFutureTarget.get(RequestFutureTarget.java:108)
at com.sample.app.Manager.cacheImage(Manager.kt:69)
at com.sample.app.Manager.access$cacheImage(Manager.kt:19)
at com.sample.app.Manager$updateImageCache$1.run(Manager.kt:46)
at io.fabric.sdk.android.services.concurrency.AsyncTask$SerialExecutor$1.run(AsyncTask.java:254)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
... 2 more
Caused by: com.bumptech.glide.load.engine.GlideException: Failed to load resource
There was 1 cause:
java.io.FileNotFoundException(https://imageSamples/sampleimage.jgp)
call GlideException#logRootCauses(String) for more detail
То, что я сделал, чтобы предотвратить падение приложения, - это try-catch.Но я не очень рад использовать try catch в коде.
try {
val file = requestManager.downloadOnly().load(imageUrl).listener(requestListener).submit().get()
} catch (e: Exception) {
e.printStackTrace()
}
Есть ли лучший способ справиться с этим?Как некоторые методы API от Glide?