Is there a reason to throw a custom Exception? Could we raise an `ArgumentError`?