Use error handler to report errors
diff --git a/include/fmt/printf.h b/include/fmt/printf.h
index 263fa5a..850ded7 100644
--- a/include/fmt/printf.h
+++ b/include/fmt/printf.h
@@ -367,18 +367,9 @@
 typename printf_context<Char, AF>::format_arg printf_context<Char, AF>::get_arg(
     iterator it, unsigned arg_index) {
   (void)it;
-  const char *error = 0;
-  format_arg arg;
-  if (arg_index == std::numeric_limits<unsigned>::max()) {
-    arg_index = this->next_arg_index();
-    if (!error)
-      arg = this->do_get_arg(arg_index, error);
-  } else {
-    arg = Base::get_arg(arg_index - 1, error);
-  }
-  if (error)
-    FMT_THROW(format_error(!*it ? "invalid format string" : error));
-  return arg;
+  if (arg_index == std::numeric_limits<unsigned>::max())
+    return this->do_get_arg(this->next_arg_index());
+  return Base::get_arg(arg_index - 1);
 }
 
 template <typename Char, typename AF>