bchavez/Bogus · error · ArgumentException
Cannot parse arguments for {mm.Name}. Argument list: {string
Error message
Cannot parse arguments for {mm.Name}. Argument list: {string.Join(",", parameters)} What it means
The fallback catch-all in Tokenizer.ConvertStringArgumentsToObjects (Tokenizer.cs:156) catches any conversion exception not already handled (i.e. not OverflowException, InvalidCastException, or FormatException) and rethrows as ArgumentException. The most common source is System.ArgumentException from Enum.Parse(type, value) when value is not a defined member of the enum: that ArgumentException is neither InvalidCast nor Format, so it slips past the filtered handlers into this generic one.
Source
Thrown at Source/Bogus/Tokenizer.cs:156
private static object[] ConvertStringArgumentsToObjects(string[] parameters, MustashMethod mm)
{
try
{
return mm.Method.GetParameters()
.Zip(parameters, GetValueForParameter)
.ToArray();
}
catch (OverflowException ex)
{
throw new ArgumentOutOfRangeException($"One of the arguments for {mm.Name} is out of supported range. Argument list: {string.Join(",", parameters)}", ex);
}
catch (Exception ex) when (ex is InvalidCastException or FormatException)
{
throw new ArgumentException($"One of the arguments for {mm.Name} cannot be converted to target type. Argument list: {string.Join(",", parameters)}", ex);
}
catch (Exception ex)
{
throw new ArgumentException($"Cannot parse arguments for {mm.Name}. Argument list: {string.Join(",", parameters)}", ex);
}
}
private static object GetValueForParameter(ParameterInfo parameterInfo, string parameterValue)
{
var type = Nullable.GetUnderlyingType(parameterInfo.ParameterType) ?? parameterInfo.ParameterType;
if( typeof(Enum).IsAssignableFrom(type)) return Enum.Parse(type, parameterValue);
if( typeof(TimeSpan) == type ) return TimeSpan.Parse(parameterValue);
return Convert.ChangeType(parameterValue, type);
}
private static string GetArgumentsString(string methodCall, int parametersStart)
{
var parametersEnd = methodCall.IndexOf(')');
if( parametersEnd == -1 )View on GitHub (pinned to 6ece18c5c2)
Solutions
- Use only currently-defined enum member names (case-sensitive) or their integral values as the argument.
- Inspect the inner exception (InnerException / its Message) to identify the rejected value and target type.
- If you control the input, validate enum names against Enum.GetNames(targetType) before templating.
Example fix
// before
faker.Parse("{{system.filetype(\"notreal\")}}");
// after
faker.Parse("{{system.filetype(\"jpeg\")}}"); // use a defined member Defensive patterns
Strategy: validation
Validate before calling
// The generic catch is most often Enum.Parse rejecting an undefined member; pre-check enums.
static bool EnumArgOk(string value, Type targetType)
{
var t = Nullable.GetUnderlyingType(targetType) ?? targetType;
if (!typeof(Enum).IsAssignableFrom(t)) return true;
return Enum.IsDefined(t, value) || (int.TryParse(value, out var n) && Enum.IsDefined(t, n));
} Try / catch
try { var s = faker.Parse(tpl); }
catch (ArgumentException ex) when (ex.Message.Contains("Cannot parse arguments"))
{
// Inspect ex.InnerException: for enum params it is the ArgumentException from Enum.Parse.
throw new InvalidOperationException($"Argument parsing failed (often an undefined enum member) in template: {tpl}", ex);
} Prevention
- For enum-typed params, use only Enum.GetNames-defined values.
- After a Bogus upgrade, re-check any enum member names you template against the new definitions.
- Treat a sudden 'Cannot parse arguments' on a previously-working template as a likely enum/member rename.
When it happens
Trigger: Passing an UNDEFINED enum member name to an enum-typed parameter, e.g. {{system.filetype("notreal")}} where 'notreal' is not a defined member: Enum.Parse throws ArgumentException, rewrapped here. Any other exotic converter exception also lands here.
Common situations: Guessing enum member names from strings; version skew where an enum member was renamed or removed between Bogus versions; data files referencing an enum value that no longer exists; typos in case-sensitive enum names.
Related errors
- Can't parse {methodName} because the dataset was not provide
- Cannot find a method '{methodName}' that could accept {argum
- One of the arguments for {mm.Name} is out of supported range
- One of the arguments for {mm.Name} cannot be converted to ta
- The method call '{methodCall}' is missing a terminating ')'
AI-assisted analysis of bchavez/Bogus@6ece18c5c2 (2026-08-13).
Data as JSON: /api/errors/3aabd7bc3afd3356.
Report an issue: GitHub.