ArgumentError is an Error and thus supposed to be used for programmer errors. ArgResults.operator[] throws ArgumentError on what should be a runtime error: https://github.com/dart-lang/core/blob/61e677100b06d56a1b3731ab1178ebf9102ecb1f/pkgs/args/lib/src/arg_results.dart#L69 Am I wrong?