diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2009-05-20 15:44:43 -0230 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2009-05-20 15:44:43 -0230 |
commit | b902f409574d383c4f1b6f01fd8c8b56cbb50862 (patch) | |
tree | bc0622d1ce66844536341e60116c75c47c54082e /cpp/src/slice2freeze/Main.cpp | |
parent | Remove debug line (diff) | |
download | ice-b902f409574d383c4f1b6f01fd8c8b56cbb50862.tar.bz2 ice-b902f409574d383c4f1b6f01fd8c8b56cbb50862.tar.xz ice-b902f409574d383c4f1b6f01fd8c8b56cbb50862.zip |
Bug 3996 - slice compilers can terminate on uncaught exceptions
Diffstat (limited to 'cpp/src/slice2freeze/Main.cpp')
-rw-r--r-- | cpp/src/slice2freeze/Main.cpp | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/cpp/src/slice2freeze/Main.cpp b/cpp/src/slice2freeze/Main.cpp index 8ba2400f060..34ad5f8dd4a 100644 --- a/cpp/src/slice2freeze/Main.cpp +++ b/cpp/src/slice2freeze/Main.cpp @@ -1477,7 +1477,7 @@ gen(const string& name, const UnitPtr& u, const vector<string>& includePaths, co } int -main(int argc, char* argv[]) +compile(int argc, char* argv[]) { IceUtilInternal::Options opts; opts.addOpt("h", "help"); @@ -2023,3 +2023,40 @@ main(int argc, char* argv[]) return status; } + +int +main(int argc, char* argv[]) +{ + try + { + return compile(argc, argv); + } + catch(const IceUtil::Exception& ex) + { + cerr << ex.what() << endl; +#ifdef __GNUC__ + cerr << ex.ice_stackTrace() << endl; +#endif + return EXIT_FAILURE; + } + catch(const std::exception& ex) + { + cerr << ex.what() << endl; + return EXIT_FAILURE; + } + catch(const std::string& msg) + { + cerr << msg << endl; + return EXIT_FAILURE; + } + catch(const char* msg) + { + cerr << msg << endl; + return EXIT_FAILURE; + } + catch(...) + { + cerr << "unknown exception" << endl; + return EXIT_FAILURE; + } +} |