{"record":{"id":"0c723ae2598341ad","repo":"EllanJiang/GameFramework","slug":"sound-group-name-is-invalid","errorCode":null,"errorMessage":"Sound group name is invalid.","messagePattern":"Sound group name is invalid\\.","errorType":"exception","errorClass":"GameFrameworkException","httpStatus":null,"severity":"error","filePath":"GameFramework/Sound/SoundManager.SoundGroup.cs","lineNumber":35,"sourceCode":"        private sealed class SoundGroup : ISoundGroup\n        {\n            private readonly string m_Name;\n            private readonly ISoundGroupHelper m_SoundGroupHelper;\n            private readonly List<SoundAgent> m_SoundAgents;\n            private bool m_AvoidBeingReplacedBySamePriority;\n            private bool m_Mute;\n            private float m_Volume;\n\n            /// <summary>\n            /// 初始化声音组的新实例。\n            /// </summary>\n            /// <param name=\"name\">声音组名称。</param>\n            /// <param name=\"soundGroupHelper\">声音组辅助器。</param>\n            public SoundGroup(string name, ISoundGroupHelper soundGroupHelper)\n            {\n                if (string.IsNullOrEmpty(name))\n                {\n                    throw new GameFrameworkException(\"Sound group name is invalid.\");\n                }\n\n                if (soundGroupHelper == null)\n                {\n                    throw new GameFrameworkException(\"Sound group helper is invalid.\");\n                }\n\n                m_Name = name;\n                m_SoundGroupHelper = soundGroupHelper;\n                m_SoundAgents = new List<SoundAgent>();\n            }\n\n            /// <summary>\n            /// 获取声音组名称。\n            /// </summary>\n            public string Name\n            {\n                get","sourceCodeStart":17,"sourceCodeEnd":53,"githubUrl":"https://github.com/EllanJiang/GameFramework/blob/d0c010b05167c58e92350449d04864a91ca13fd2/GameFramework/Sound/SoundManager.SoundGroup.cs#L17-L53","documentation":"This error is thrown by the SoundGroup constructor when the group name is null or an empty string. GameFramework requires every sound group to have a non-empty name because the name is used as the dictionary key in SoundManager's m_SoundGroups. It is a fail-fast guard against constructing an unusable group object.","triggerScenarios":"Calling new SoundGroup(name, soundGroupHelper) with name == null or name == \"\". Also reached indirectly via SoundManager.AddSoundGroup if that method were bypassed, though AddSoundGroup validates first.","commonSituations":"Loading sound group names from configuration files or an inspector field that was left blank; passing an uninitialized string variable; string splitting that yielded an empty segment.","solutions":["Pass a non-empty, non-null name to the SoundGroup constructor","Validate/trim the name string before constructing the group","Fix the config or editor field that supplies the sound group name"],"exampleFix":"// before\nvar group = new SoundGroup(name, helper); // name may be null/empty\n// after\nif (string.IsNullOrEmpty(name)) { name = \"Default\"; }\nvar group = new SoundGroup(name, helper);","handlingStrategy":"validation","validationCode":"if (string.IsNullOrEmpty(name)) throw new ArgumentException(\"Sound group name required\");\nvar group = new SoundGroup(name, helper);","typeGuard":"bool IsValidGroupName(string name) => !string.IsNullOrEmpty(name);","tryCatchPattern":"try { var group = new SoundGroup(name, helper); }\ncatch (GameFrameworkException ex) { Log.Error(ex.Message); }","preventionTips":["Never pass user/config strings directly as group names without trimming","Centralize group creation in one factory that validates inputs","Default empty names to a sentinel like \"Default\""],"tags":["gameframework","sound","argument-validation"],"backgroundTag":"empty-required-field","analyzedSha":"d0c010b05167c58e92350449d04864a91ca13fd2","analyzedAt":"2026-09-15T13:37:15.352Z","contentChangedAt":"2026-09-15T13:37:15.352Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}