{"record":{"id":"50b0d9cc37233298","repo":"tui-cs/Terminal.Gui","slug":"invalid-scheme-name-schemename","errorCode":null,"errorMessage":"Invalid scheme name: {schemeName}","messagePattern":"Invalid scheme name: (.+?)","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"Terminal.Gui/Configuration/SchemeManager.cs","lineNumber":122,"sourceCode":"        {\n            throw new InvalidOperationException ($@\"{schemeName}: Does not exist in Schemes.\");\n        }\n\n        GetSchemes ().Remove (schemeName);\n    }\n\n    /// <summary>\n    ///     Gets the <see cref=\"Scheme\"/> for the specified <see cref=\"Drawing.Schemes\"/>.\n    /// </summary>\n    /// <param name=\"schemeName\"></param>\n    /// <returns></returns>\n    /// <exception cref=\"ArgumentException\"></exception>\n    public static Scheme GetScheme (Schemes schemeName)\n    {\n        // Convert schemeName to string via Enum api\n        string? schemeNameString = SchemesToSchemeName (schemeName);\n\n        return schemeNameString is null ? throw new ArgumentException ($\"Invalid scheme name: {schemeName}\") : GetSchemesForCurrentTheme () [schemeNameString]!;\n    }\n\n    /// <summary>\n    ///     Gets the <see cref=\"Scheme\"/> for the specified string.\n    /// </summary>\n    /// <param name=\"schemeName\"></param>\n    /// <returns></returns>\n    /// <exception cref=\"KeyNotFoundException\">If <paramref name=\"schemeName\"/> is not found in the current theme.</exception>\n    public static Scheme GetScheme (string schemeName) => GetSchemesForCurrentTheme () [schemeName]!;\n\n    /// <summary>\n    ///     Attempts to get the <see cref=\"Scheme\"/> for the specified name without throwing.\n    ///     Returns <see langword=\"false\"/> and sets <paramref name=\"scheme\"/> to <see langword=\"null\"/> if the scheme is\n    ///     not found, or if the configuration is not in a state where schemes can be resolved.\n    /// </summary>\n    /// <param name=\"schemeName\">The name of the scheme to retrieve.</param>\n    /// <param name=\"scheme\">\n    ///     When this method returns <see langword=\"true\"/>, contains the resolved <see cref=\"Scheme\"/>; otherwise","sourceCodeStart":104,"sourceCodeEnd":140,"githubUrl":"https://github.com/tui-cs/Terminal.Gui/blob/2e47b11478db083499917f2ad27c34d30efb0df1/Terminal.Gui/Configuration/SchemeManager.cs#L104-L140","documentation":"GetScheme(Schemes) converts the enum to its name via SchemesToSchemeName (Enum.GetName). If the enum value is not a defined member (e.g. (Schemes)999 cast from an unchecked int), Enum.GetName returns null and this ArgumentException is thrown.","triggerScenarios":"Calling GetScheme((Schemes)999) or GetScheme((Schemes)(-1)) — an enum value outside the defined Schemes members.","commonSituations":"Casting an unchecked integer to Schemes; deserializing an invalid numeric scheme id; arithmetic on enum values producing undefined members.","solutions":["Validate the enum value with Enum.IsDefined(typeof(Schemes), value) before calling GetScheme.","Use a known Schemes member (e.g. Schemes.TopLevel)."],"exampleFix":"// before\nSchemeManager.GetScheme ((Schemes)999);\n// after\nSchemes s = (Schemes)999;\nif (Enum.IsDefined (typeof (Schemes), s))\n{\n    SchemeManager.GetScheme (s);\n}","handlingStrategy":"validation","validationCode":"static bool IsDefinedScheme (Schemes s) => Enum.IsDefined (typeof (Schemes), s);","typeGuard":null,"tryCatchPattern":"try { var scheme = SchemeManager.GetScheme (s); }\ncatch (ArgumentException ex) when (ex.Message.Contains (\"Invalid scheme name\"))\n{ /* s is not a defined Schemes member */ }","preventionTips":["Always validate enum inputs with Enum.IsDefined before use.","For user-supplied names, prefer the string-based GetScheme/TryGetScheme."],"tags":["config","scheme","runtime-api","enum"],"backgroundTag":null,"analyzedSha":"2e47b11478db083499917f2ad27c34d30efb0df1","analyzedAt":"2026-08-13T19:20:08.826Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}