Java Firebase存储异常和Crashlytics异常不匹配?

Java Firebase存储异常和Crashlytics异常不匹配?,java,android,firebase,firebase-storage,crashlytics,Java,Android,Firebase,Firebase Storage,Crashlytics,我正在使用Firebase在Android上下载文件。这是我的密码: try { //.. Try to download file from Firebase } catch(StorageException e) { if(e.getErrorCode() == StorageException.ERROR_RETRY_LIMIT_EXCEEDED) { //Ignore! Exception has occurred due to no Internet a

我正在使用Firebase在Android上下载文件。这是我的密码:

try {
    //.. Try to download file from Firebase
} catch(StorageException e) {
    if(e.getErrorCode() == StorageException.ERROR_RETRY_LIMIT_EXCEEDED) {
        //Ignore! Exception has occurred due to no Internet availability
    } else {
        //Other genuine failure, log it
       Crashlytics.logException(e);
    }
}
现在,此代码不会发送“已超过操作重试限制”。异常。然而,在Crashlytics中,我仍然可以看到报告了这个异常

Non-fatal Exception: com.google.firebase.storage.StorageException
The operation retry limit has been exceeded.

Caused by javax.net.ssl.SSLException
Read error: ssl=0x7188e1fe08: I/O error during system call, Software caused connection abort
这怎么可能?我遗漏了什么吗


Firebase版本:16.0.1

您的帖子没有显示文件下载的代码。我假设它在
任务上有一个完成侦听器。可能异常不会传播到封闭的
try块
,您需要在回调中处理它,如下所示:

storageRef.getFile(contentDir).addOnCompleteListener(
        new OnCompleteListener<FileDownloadTask.TaskSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<FileDownloadTask.TaskSnapshot> task) {
        if (task.isSuccessful()) {
            ...
        } else {
            StorageException se = (StorageException) task.getException();
            if (se.getErrorCode() == StorageException.ERROR_RETRY_LIMIT_EXCEEDED) {
                // Ignore
            } else {
                Crashlytics.logException(se);
            }
        }
    }
});
storageRef.getFile(contentDir.addOnCompleteListener)(
新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
...
}否则{
StorageException se=(StorageException)task.getException();
如果(se.getErrorCode()==StorageException.ERROR\u重试\u超出限制){
//忽略
}否则{
Crashlytics.logException(se);
}
}
}
});

如果我猜错了您的下载代码,请更新您的帖子以将其包括在内。

无法保证StorageException的错误代码在所有情况下都被设置或正确设置,因为错误\u重试\u限制\u超过了错误,您的检查可能因此失败。基本上,Firebase代码中的某些人有一个错误,他们只是未能正确设置错误代码(或将其设置为不同的值),但错误消息设置正确,因此当您打印错误时,看起来您期望的不是错误代码值。如果可以复制错误,请设置断点或添加更多异常值日志记录,以便在检查失败时查看错误代码。尝试添加另一个检查,以解析错误消息,作为错误代码错误情况下的备份。

谢谢您的回答。我的代码正是您显示的代码。但异常仍在报告中。很难猜测为什么该代码不起作用。您可能需要添加一些日志语句来验证是否进入
onComplete()
回调。还要仔细检查Crashlytics中的堆栈跟踪,以确认异常是调用
getFile()
而不是其他调用的结果。奇怪的是,并非所有设备都无法识别此错误代码。只有少数设备出现了这种错误。