lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [lmi] master cf0c022 02/13: Add conditional debugging code


From: Greg Chicares
Subject: [lmi-commits] [lmi] master cf0c022 02/13: Add conditional debugging code
Date: Sat, 15 Jun 2019 20:25:35 -0400 (EDT)

branch: master
commit cf0c02252d4f605812559661bc7ce6d4a60eb059
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>

    Add conditional debugging code
    
    This commit may be reverted someday. For now, it's sometimes handy.
---
 basic_tables.cpp | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/basic_tables.cpp b/basic_tables.cpp
index 150cd70..8a0f4c0 100644
--- a/basic_tables.cpp
+++ b/basic_tables.cpp
@@ -30,6 +30,11 @@
 #include "oecumenic_enumerations.hpp"
 #include "product_data.hpp"
 
+#if 0 // For debugging only.
+#include "alert.hpp"
+#include "handle_exceptions.hpp"
+#endif // 0
+
 #include <string>
 
 namespace
@@ -43,12 +48,44 @@ std::vector<double> basic_table_rates
     ,int                     years_to_maturity
     )
 {
+#if 1
     return actuarial_table_rates
         (AddDataDir(product.datum(table_name))
         ,database.query<int>(table_id)
         ,issue_age
         ,years_to_maturity
         );
+#else // For debugging only. "Unsuitable for production" as explained below.
+    std::string const f = AddDataDir(product.datum(table_name));
+    int const t = database.query<int>(table_id);
+    try
+        {
+        return actuarial_table_rates(f, t, issue_age, years_to_maturity);
+        }
+    catch(...)
+        {
+        report_exception();
+        if(0 == t)
+            {
+            warning() << "Table number zero is always invalid." << LMI_FLUSH;
+            }
+        else
+            {
+            actuarial_table const a(f, t);
+            warning()
+                << "'" << f << "' rate-table database\n"
+                << t << " table number\n"
+                << issue_age << " issue_age argument\n"
+                << years_to_maturity << " years_to_maturity argument\n"
+                << a.min_age() << " table minimum age\n"
+                << a.max_age() << " table maximum age\n"
+                << LMI_FLUSH
+                ;
+            }
+        // Unsuitable for production, which must throw instead.
+        return std::vector<double>(years_to_maturity);
+        }
+#endif // 0
 }
 } // Unnamed namespace
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]