Change paramter name to FB_STRINGIZE
[folly.git] / folly / FormatArg.h
index 124d621d732f0fbf0511e584c1091c7e59647664..48bfe2af8bb2061312b4fc488e4ef289e5b9c943 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2013 Facebook, Inc.
+ * Copyright 2014 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 namespace folly {
 
+class BadFormatArg : public std::invalid_argument {
+ public:
+  explicit BadFormatArg(const std::string& msg)
+    : std::invalid_argument(msg) {}
+};
+
 /**
  * Parsed format argument.
  */
@@ -71,8 +77,11 @@ struct FormatArg {
     }
   }
 
+  template <typename... Args>
+  std::string errorStr(Args&&... args) const;
   template <typename... Args>
   void error(Args&&... args) const FOLLY_NORETURN;
+
   /**
    * Full argument string, as passed in to the constructor.
    */
@@ -185,11 +194,16 @@ struct FormatArg {
   NextKeyMode nextKeyMode_;
 };
 
+template <typename... Args>
+inline std::string FormatArg::errorStr(Args&&... args) const {
+  return to<std::string>(
+    "invalid format argument {", fullArgString, "}: ",
+    std::forward<Args>(args)...);
+}
+
 template <typename... Args>
 inline void FormatArg::error(Args&&... args) const {
-  throw std::invalid_argument(to<std::string>(
-      "folly::format: invalid format argument {", fullArgString, "}: ",
-      std::forward<Args>(args)...));
+  throw BadFormatArg(errorStr(std::forward<Args>(args)...));
 }
 
 template <bool emptyOk>