{"record":{"id":"8fb0f397735b2d86","repo":"bchavez/Bogus","slug":"the-array-is-empty-there-are-no-items-to-select","errorCode":null,"errorMessage":"The array is empty. There are no items to select.","messagePattern":"The array is empty\\. There are no items to select\\.","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"Source/Bogus/Randomizer.cs","lineNumber":478,"sourceCode":"      return Number() == 0;\n   }\n\n   /// <summary>\n   /// Get a random boolean.\n   /// </summary>\n   /// <param name=\"weight\">The probability of true. Ranges from 0 to 1.</param>\n   public bool Bool(float weight)\n   {\n       return Float() < weight;\n   }\n\n   /// <summary>\n   /// Get a random array element.\n   /// </summary>\n   public T ArrayElement<T>(T[] array)\n   {\n      if (array.Length <= 0)\n         throw new ArgumentException(\"The array is empty. There are no items to select.\", nameof(array));\n\n      var r = Number(max: array.Length - 1);\n      return array[r];\n   }\n\n   /// <summary>\n   /// Helper method to get a random element in a BSON array.\n   /// </summary>\n   public BValue ArrayElement(BArray props, int? min = null, int? max = null)\n   {\n      var r = Number(min: min ?? 0, max: max - 1 ?? props.Count - 1);\n      return props[r];\n   }\n\n   /// <summary>\n   /// Get a random array element.\n   /// </summary>\n   public string ArrayElement(Array array)","sourceCodeStart":460,"sourceCodeEnd":496,"githubUrl":"https://github.com/bchavez/Bogus/blob/6ece18c5c22648ab4606e45a0aaf2f07fc5259e4/Source/Bogus/Randomizer.cs#L460-L496","documentation":"Thrown by Randomizer.ArrayElement<T> when the supplied array has Length <= 0. The method picks a random index, so it requires at least one element. The param is named 'array'.","triggerScenarios":"Calling f.Random.ArrayElement(Array.Empty<T>()) or passing a zero-length array from a filtered/empty source.","commonSituations":"Filtering a source array to empty then sampling; results of a LINQ Where().ToArray() that yields nothing.","solutions":["Check array.Length > 0 before calling ArrayElement.","Provide a non-empty default/fallback array.","Guard the upstream filter so empty results are handled earlier."],"exampleFix":"// before\nvar pick = f.Random.ArrayElement(items.Where(x => x.Rare).ToArray());\n// after\nvar rare = items.Where(x => x.Rare).ToArray();\nvar pick = rare.Length > 0 ? f.Random.ArrayElement(rare) : fallbackItem;","handlingStrategy":"validation","validationCode":"static T SafeArrayElement<T>(Bogus.Randomizer r, T[] arr, T fallback) {\n    return arr.Length > 0 ? r.ArrayElement(arr) : fallback;\n}","typeGuard":"bool HasItems<T>(T[] arr) => arr is { Length: > 0 };","tryCatchPattern":"try { return r.ArrayElement(arr); }\ncatch (ArgumentException ex) when (ex.Message.Contains(\"array is empty\")) {\n    return default; // or fallback element\n}","preventionTips":["Check array.Length before sampling.","Provide fallback elements for empty sources.","Guard upstream LINQ filters that can return empty arrays."],"tags":["bogus","randomizer","arrayelement","empty-collection"],"backgroundTag":null,"analyzedSha":"6ece18c5c22648ab4606e45a0aaf2f07fc5259e4","analyzedAt":"2026-08-13T21:08:15.463Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}