Misc. exception-related fixes.
authorTeemu Murtola <teemu.murtola@gmail.com>
Sat, 4 Feb 2012 08:43:52 +0000 (10:43 +0200)
committerTeemu Murtola <teemu.murtola@gmail.com>
Mon, 20 Feb 2012 16:53:52 +0000 (18:53 +0200)
- Catch exceptions by const reference (probably has no effect on
  generated code, but is according to some best practices).
- Remove unnecessary cleanup code from analysismodule.cpp that could
  actually trigger asserts.
- Remove currently unnecessary cleanup code from parsetree.cpp and
  create issue #880 to discuss a more general solution.

Change-Id: I91bae217f51fffd9524d7b9598edf8bd6fc43b2f

share/template/template.cpp
src/gromacs/fatalerror/exceptions.h
src/gromacs/options/cmdlineparser.cpp
src/gromacs/options/options.cpp
src/gromacs/options/tests/optionsassigner.cpp
src/gromacs/selection/parsetree.cpp
src/gromacs/selection/selectionoption.cpp
src/gromacs/trajectoryanalysis/analysismodule.cpp
src/gromacs/trajectoryanalysis/cmdlinerunner.cpp
src/gromacs/trajectoryanalysis/tests/test_selection.cpp
src/programs/g_ana/g_ana.cpp

index ad66d5727886f0af26ad49f4a954519107015e10..432610199339e86ce22caf96b82e9237d983db99 100644 (file)
@@ -233,7 +233,7 @@ main(int argc, char *argv[])
         TrajectoryAnalysisCommandLineRunner runner(&module);
         return runner.run(argc, argv);
     }
-    catch (std::exception &ex)
+    catch (const std::exception &ex)
     {
         fprintf(stderr, "%s", gmx::formatErrorMessage(ex).c_str());
         return 1;
index bdee78e7777e58091049aab10ad3f51f994d5372..c622c7422c9b35a1a6ac6c7bfe8dc3178a7bbc5e 100644 (file)
@@ -261,7 +261,7 @@ int main(int argc, char *argv[])
         // The actual code for the program
         return 0;
     }
-    catch (std::exception &ex)
+    catch (const std::exception &ex)
     {
         fprintf(stderr, "%s", gmx::formatErrorMessage(ex).c_str());
         return 1;
index 15cebfe5e3d2d3526fc64fd61b24f50e8204902c..780175f1d3085fb4612d7c4deb2e490f004b2168 100644 (file)
@@ -90,7 +90,7 @@ void CommandLineParser::parse(int *argc, char *argv[])
                 {
                     _impl->_assigner.finishOption();
                 }
-                catch (UserInputError &ex)
+                catch (const UserInputError &ex)
                 {
                     errors.append(ex.what());
                 }
@@ -103,7 +103,7 @@ void CommandLineParser::parse(int *argc, char *argv[])
                 const char *name = &argv[i][1];
                 _impl->_assigner.startOption(name);
             }
-            catch (UserInputError &ex)
+            catch (const UserInputError &ex)
             {
                 bDiscard = true;
                 errors.append(ex.what());
@@ -116,7 +116,7 @@ void CommandLineParser::parse(int *argc, char *argv[])
             {
                 _impl->_assigner.appendValue(argv[i]);
             }
-            catch (UserInputError &ex)
+            catch (const UserInputError &ex)
             {
                 errors.append(ex.what());
             }
@@ -129,7 +129,7 @@ void CommandLineParser::parse(int *argc, char *argv[])
         {
             _impl->_assigner.finishOption();
         }
-        catch (UserInputError &ex)
+        catch (const UserInputError &ex)
         {
             errors.append(ex.what());
         }
index f9b155979a7220a0189e62eb8f8fe3cd528c7a90..ecbddde4320fd1e3f7159f00179aa0bfbdb56f11 100644 (file)
@@ -217,7 +217,7 @@ void Options::finish()
         {
             option->finish();
         }
-        catch (UserInputError &ex)
+        catch (const UserInputError &ex)
         {
             MessageStringContext context(&errors, "In option " + option->name());
             errors.append(ex.what());
@@ -231,7 +231,7 @@ void Options::finish()
         {
             section->finish();
         }
-        catch (UserInputError &ex)
+        catch (const UserInputError &ex)
         {
             errors.append(ex.what());
         }
index c5afbec62f7074b624b94cef13d20a106115d501..10f563ade4a132c270f2560042acafe2923a702c 100644 (file)
@@ -338,7 +338,7 @@ TEST(OptionsAssignerBooleanTest, HandlesBooleanWithPrefixAndValue)
         EXPECT_NO_THROW(assigner.finish());
         EXPECT_TRUE(value);
     }
-    catch (gmx::InvalidInputError &)
+    catch (const gmx::InvalidInputError &)
     {
     }
 }
index 432e7e91101d07b24f2aa1385e69ad94113ad948..29f5234de388a793fd97f8cb3a157ced1e6ac55f 100644 (file)
@@ -588,23 +588,20 @@ set_refpos_type(gmx_ana_poscalc_coll_t *pcc, t_selelem *sel, const char *rpost,
     if (sel->u.expr.method->pupdate)
     {
         /* Need to translate exceptions to error codes because the parser still
-         * uses return codes for error handling. */
+         * uses return codes for error handling.
+         * Temporary solution for Redmine issue #880, exceptions should only
+         * occur here for internal errors... */
         try
         {
             /* By default, use whole residues/molecules. */
             gmx_ana_poscalc_create_enum(&sel->u.expr.pc, pcc, rpost,
                                         POS_COMPLWHOLE);
         }
-        catch (gmx::GromacsException &ex)
+        catch (const gmx::GromacsException &ex)
         {
             _gmx_selparser_error(scanner, ex.what());
             return ex.errorCode();
         }
-        catch (...)
-        {
-            _gmx_selparser_error(scanner, "Unknown error!");
-            return gmx::eeUnknownError;
-        }
     }
     else
     {
index 3521b6ce1180436497c1c1bc4a6875d611bfd0ee..fc5d4b393854948f6141cd4380c2215bf7dd75f1 100644 (file)
@@ -167,7 +167,7 @@ void SelectionOptionStorage::setAllowedValueCount(int count)
     {
         setMaxValueCount(count);
     }
-    catch (UserInputError &ex)
+    catch (const UserInputError &ex)
     {
         errors.append(ex.what());
     }
index f3cae4eed4f54cca3c7a0d2943ab31cb0fd6dd81..df5c22d7124a17c3a60451d319fa79c75f636a1a 100644 (file)
@@ -65,13 +65,6 @@ TrajectoryAnalysisModuleData::Impl::Impl(
 
 TrajectoryAnalysisModuleData::Impl::~Impl()
 {
-    try
-    {
-        finishHandles();
-    }
-    catch (...)
-    {
-    }
 }
 
 
index 3d3925c800ad33695239f5b78334418650b61cb9..9e94a986cafbd84dafec95092c3289b1839096f8 100644 (file)
@@ -140,7 +140,7 @@ TrajectoryAnalysisCommandLineRunner::Impl::parseOptions(
         {
             parser.parse(argc, argv);
         }
-        catch (UserInputError &ex)
+        catch (const UserInputError &ex)
         {
             printHelp(*options, *common);
             throw;
index 3e0d44daa87358d5d9305b03a2ab3d8bf7e7f083..aba5fa3aec802de5eaf649bee9305ed489c0189a 100644 (file)
@@ -176,7 +176,7 @@ main(int argc, char *argv[])
         runner.setSelectionDebugLevel(1);
         return runner.run(argc, argv);
     }
-    catch (std::exception &ex)
+    catch (const std::exception &ex)
     {
         fprintf(stderr, "%s", gmx::formatErrorMessage(ex).c_str());
         return 1;
index ee8ca5567683c471c4d6a47127cb834f4ebe42c6..c2227d36ce2340995f2dcfc2fad9a38daf4c35cf 100644 (file)
@@ -67,7 +67,7 @@ main(int argc, char *argv[])
         gmx::TrajectoryAnalysisCommandLineRunner runner(mod.get());
         return runner.run(argc, argv);
     }
-    catch (std::exception &ex)
+    catch (const std::exception &ex)
     {
         fprintf(stderr, "%s", gmx::formatErrorMessage(ex).c_str());
         return 1;