{"record":{"id":"15d97f2462266f23","repo":"EllanJiang/GameFramework","slug":"parse-read-write-version-list-exception-0","errorCode":null,"errorMessage":"Parse read-write version list exception '{0}'.","messagePattern":"Parse read-write version list exception '(.+?)'\\.","errorType":"exception","errorClass":"GameFrameworkException","httpStatus":null,"severity":"error","filePath":"GameFramework/Resource/ResourceManager.ResourceChecker.cs","lineNumber":481,"sourceCode":"                        }\n                    }\n\n                    foreach (LocalVersionList.Resource resource in resources)\n                    {\n                        SetReadWriteInfo(new ResourceName(resource.Name, resource.Variant, resource.Extension), (LoadType)resource.LoadType, resource.Length, resource.HashCode);\n                    }\n\n                    m_ReadWriteVersionListReady = true;\n                    RefreshCheckInfoStatus();\n                }\n                catch (Exception exception)\n                {\n                    if (exception is GameFrameworkException)\n                    {\n                        throw;\n                    }\n\n                    throw new GameFrameworkException(Utility.Text.Format(\"Parse read-write version list exception '{0}'.\", exception), exception);\n                }\n                finally\n                {\n                    if (memoryStream != null)\n                    {\n                        memoryStream.Dispose();\n                        memoryStream = null;\n                    }\n                }\n            }\n\n            private void OnLoadReadWriteVersionListFailure(string fileUri, string errorMessage, object userData)\n            {\n                if (m_ReadWriteVersionListReady)\n                {\n                    throw new GameFrameworkException(\"Read-write version list has been parsed.\");\n                }\n","sourceCodeStart":463,"sourceCodeEnd":499,"githubUrl":"https://github.com/EllanJiang/GameFramework/blob/d0c010b05167c58e92350449d04864a91ca13fd2/GameFramework/Resource/ResourceManager.ResourceChecker.cs#L463-L499","documentation":"Wraps any non-GameFrameworkException raised while parsing the read-write version list into a GameFrameworkException with the original exception's text and instance attached. Existing GameFrameworkExceptions (like the deserialize-failure one) pass through untouched.","triggerScenarios":"An exception other than GameFrameworkException escapes the try block of OnLoadReadWriteVersionListSuccess — e.g. stream read errors on truncated bytes, or errors in the resource/fileSystem iteration loop.","commonSituations":"Partially written sandbox version list from a crashed update; deserializer hitting unexpected EOF; I/O exceptions reading from persistent storage; bugs in fileSystem name lookup throwing inside the foreach.","solutions":["Read InnerException in the message to find the real cause","Delete the corrupt read-write version list and let the framework rebuild it","Verify the write path completed (fsync/close) before the previous update finished","Wrap resource-check start in try-catch to recover via re-download"],"exampleFix":"// before: crash propagates\nchecker.CheckResources();\n// after\ntry { checker.CheckResources(); }\ncatch (GameFrameworkException ex) { DeleteReadWriteVersionList(); RetryCheck(); }","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { checker.CheckResources(); }\ncatch (GameFrameworkException ex) when (ex.Message.StartsWith(\"Parse read-write version list exception\")) {\n    Log.Error(ex.InnerException ?? ex);\n    DeleteReadWriteVersionList(); RetryCheck();\n}","preventionTips":["Inspect InnerException for the underlying I/O or stream error","Rebuild the sandbox list after any crash during update","Guard the processing loop against null entries from corrupt data","Make check startup recoverable via re-download"],"tags":["gameframework","resource","version-list","parse-exception"],"backgroundTag":"json-parse-error","analyzedSha":"d0c010b05167c58e92350449d04864a91ca13fd2","analyzedAt":"2026-09-15T13:37:15.352Z","contentChangedAt":"2026-09-15T13:37:15.352Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}