Fix exception handling at pkg_initdb 62/74962/2
authorSangyoon Jang <s89.jang@samsung.com>
Wed, 15 Jun 2016 07:42:14 +0000 (16:42 +0900)
committerSangyoon Jang <s89.jang@samsung.com>
Thu, 16 Jun 2016 07:18:18 +0000 (00:18 -0700)
Catch bad_any_cast, bad_lexical_cast.

Change-Id: Id41d7ab752b3c548a4206670918fee1fc184a5b8
Signed-off-by: Sangyoon Jang <s89.jang@samsung.com>
src/pkg_initdb/pkg_initdb.cc

index 795316d..fc9cf21 100644 (file)
@@ -119,22 +119,29 @@ int main(int argc, char *argv[]) {
   }
 
   bpo::options_description options("Allowed options");
-  options.add_options()
-      ("uid,u", bpo::value<int>()->default_value(kUserRoot), "user id")
-      ("help,h", "display this help message");
   bpo::variables_map opt_map;
+  uid_t uid;
   try {
+    options.add_options()
+        ("uid,u", bpo::value<int>()->default_value(kUserRoot), "user id")
+        ("help,h", "display this help message");
     bpo::store(bpo::parse_command_line(argc, argv, options), opt_map);
     if (opt_map.count("help")) {
       std::cerr << options << std::endl;
       return -1;
     }
     bpo::notify(opt_map);
+    uid = opt_map["uid"].as<int>();
   } catch (const bpo::error& error) {
     std::cerr << error.what() << std::endl;
     return -1;
+  } catch (const boost::bad_any_cast& error) {
+    std::cerr << error.what() << std::endl;
+    return -1;
+  } catch (const boost::bad_lexical_cast& error) {
+    std::cerr << error.what() << std::endl;
+    return -1;
   }
-  uid_t uid = opt_map["uid"].as<int>();
 
   RemoveOldDatabases(uid);