{"record":{"id":"a8f17abbf09d0cd2","repo":"EllanJiang/GameFramework","slug":"parse-updatable-version-list-exception-0","errorCode":null,"errorMessage":"Parse updatable version list exception '{0}'.","messagePattern":"Parse updatable version list exception '(.+?)'\\.","errorType":"exception","errorClass":"GameFrameworkException","httpStatus":null,"severity":"error","filePath":"GameFramework/Resource/ResourceManager.ResourceChecker.cs","lineNumber":351,"sourceCode":"                            {\n                                continue;\n                            }\n\n                            group.AddResource(new ResourceName(resource.Name, resource.Variant, resource.Extension), resource.Length, resource.CompressedLength);\n                        }\n                    }\n\n                    m_UpdatableVersionListReady = 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 updatable 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 OnLoadUpdatableVersionListFailure(string fileUri, string errorMessage, object userData)\n            {\n                throw new GameFrameworkException(Utility.Text.Format(\"Updatable version list '{0}' is invalid, error message is '{1}'.\", fileUri, string.IsNullOrEmpty(errorMessage) ? \"<Empty>\" : errorMessage));\n            }\n\n            private void OnLoadReadOnlyVersionListSuccess(string fileUri, byte[] bytes, float duration, object userData)\n            {","sourceCodeStart":333,"sourceCodeEnd":369,"githubUrl":"https://github.com/EllanJiang/GameFramework/blob/d0c010b05167c58e92350449d04864a91ca13fd2/GameFramework/Resource/ResourceManager.ResourceChecker.cs#L333-L369","documentation":"The catch block in OnLoadUpdatableVersionListSuccess rethrows GameFrameworkExceptions as-is, but any other unexpected exception raised while parsing the updatable version list (deserializer errors, index/array errors, null refs in list processing) is wrapped as a new GameFrameworkException with the message 'Parse updatable version list exception ...' and the original exception as InnerException.","triggerScenarios":"Any non-GameFramework exception during version-list parsing in OnLoadUpdatableVersionListSuccess — malformed binary data causing serializer exceptions, out-of-range indexes in resources/fileSystems arrays, or null references while building asset/resource info dictionaries.","commonSituations":"Corrupted or partially downloaded GameFrameworkList.dat; a version list built by a newer/older framework version with a different binary layout; custom serializer bugs.","solutions":["Inspect the InnerException of the thrown GameFrameworkException to find the real parsing failure.","Re-download or rebuild the updatable version list to rule out truncation/corruption.","Ensure the runtime GameFramework version matches the resource build tool version that produced the list.","Re-download the file (check compression/checksum handling in your ResourceHelper)."],"exampleFix":"// before: opaque crash during parse\n// after: log inner exception to diagnose\ncatch (GameFrameworkException ex)\n{\n    Debug.LogError($\"Parse failed: {ex.Message}\\nInner: {ex.InnerException}\");\n}","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { m_ResourceComponent.UpdateResourceAsync(); }\ncatch (GameFrameworkException ex) when (ex.Message.StartsWith(\"Parse updatable version list exception\"))\n{\n    Debug.LogError($\"Version list parse failed: {ex.Message}\\nInner: {ex.InnerException}\");\n    // delete cached list and retry download once\n}","preventionTips":["Log InnerException — it holds the real serializer/array failure.","Re-download the list if the download may have been truncated or corrupted.","Keep resource build tool version and runtime GameFramework version in lockstep."],"tags":["gameframework","resource","version-list","parsing","wrapped-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"}