diff --git a/doc/doxygen/demo1.cpp b/doc/doxygen/demo1.cpp index 24e5f9b37..814290b2d 100644 --- a/doc/doxygen/demo1.cpp +++ b/doc/doxygen/demo1.cpp @@ -98,11 +98,10 @@ void demoprog() int main() { - try { demoprog(); - } catch (CanteraError) { - showErrors(std::cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; } } diff --git a/doc/doxygen/demo1a.cpp b/doc/doxygen/demo1a.cpp index a67ef08a9..d8f0a6ae6 100644 --- a/doc/doxygen/demo1a.cpp +++ b/doc/doxygen/demo1a.cpp @@ -31,8 +31,8 @@ int main() try { simple_demo(); - } catch (CanteraError) { - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; } } diff --git a/doc/doxygen/demoequil.cpp b/doc/doxygen/demoequil.cpp index a10a634ab..fbb743786 100644 --- a/doc/doxygen/demoequil.cpp +++ b/doc/doxygen/demoequil.cpp @@ -16,8 +16,8 @@ int main() try { equil_demo(); - } catch (CanteraError) { - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; } } diff --git a/doc/doxygen/edemo.cpp b/doc/doxygen/edemo.cpp index e52042b1f..03ff41a71 100644 --- a/doc/doxygen/edemo.cpp +++ b/doc/doxygen/edemo.cpp @@ -9,8 +9,8 @@ int main(int argc, char** argv) { try { demoprog(); - } catch (Cantera::CanteraError) { - Cantera::showErrors(std::cout); + } catch (Cantera::CanteraError& err) { + std::cout << err.what() << std::endl; return 1; } return 0; diff --git a/doc/doxygen/except.cpp b/doc/doxygen/except.cpp index 30036e4fd..23430487b 100644 --- a/doc/doxygen/except.cpp +++ b/doc/doxygen/except.cpp @@ -17,8 +17,8 @@ int main() { try { mycode(); - } catch (CanteraError) { - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; error("program terminating."); } } diff --git a/doc/doxygen/thermodemo.cpp b/doc/doxygen/thermodemo.cpp index 5a6eefaf5..ca3ed9013 100644 --- a/doc/doxygen/thermodemo.cpp +++ b/doc/doxygen/thermodemo.cpp @@ -34,8 +34,8 @@ int main(int argc, char** argv) { try { thermo_demo("h2o2.cti","ohmech"); - } catch (CanteraError) { - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; return 1; } return 0; diff --git a/include/cantera/base/ctexceptions.h b/include/cantera/base/ctexceptions.h index e41f6274e..e83a60062 100644 --- a/include/cantera/base/ctexceptions.h +++ b/include/cantera/base/ctexceptions.h @@ -54,7 +54,6 @@ namespace Cantera * where the error occurred. These functions may be eliminated from * the source code, if the -DNDEBUG option is specified to the * compiler. - * */ @@ -84,21 +83,41 @@ public: //! Destructor for base class does nothing virtual ~CanteraError() throw() {}; + //! Get a description of the error + const char* what() const throw(); + + //! Function to put this error onto Cantera's error stack + void save(); + + //! Method overridden by derived classes to formatted the error message + virtual std::string getMessage() const; + + //! Method overridden by derived classes to indicate their type + virtual std::string getClass() const { return "CanteraError"; } + protected: - //! Empty base constructor is made protected so that it may be used only by - //! inherited classes. - /*! - * We want to discourage throwing an error containing no information. - */ - CanteraError() {}; + //! Protected default constructor discourages throwing errors containing no information. + CanteraError() : saved_(false) {}; + + //! Constructor used by derived classes that override getMessage() + CanteraError(std::string procedure); + + //! The name of the procedure where the exception occurred + std::string procedure_; + +private: + std::string msg_; //!< Message associated with the exception + mutable std::string formattedMessage_; //!< Formatted message returned by what() + bool saved_; //!< Exception has already been saved to Cantera's error stack }; + //! Array size error. /*! * This error is thrown if a supplied length to a vector supplied * to Cantera is too small. * - * @ingroup errorhandling + * @ingroup errorhandling */ class ArraySizeError : public CanteraError { @@ -113,13 +132,20 @@ public: * @param sz This is the length supplied to Cantera. * @param reqd This is the required length needed by Cantera */ - ArraySizeError(std::string procedure, size_t sz, size_t reqd); + ArraySizeError(std::string procedure, size_t sz, size_t reqd) : + CanteraError(procedure), sz_(sz), reqd_(reqd) {} + + virtual std::string getMessage() const; + virtual std::string getClass() const { return "ArraySizeError"; } + +private: + size_t sz_, reqd_; }; + //! An element index is out of range. /*! - * - * @ingroup errorhandling + * @ingroup errorhandling */ class ElementRangeError : public CanteraError { @@ -134,9 +160,16 @@ public: * @param mmax This is the maximum allowed value of the index. The * minimum allowed value is assumed to be 0. */ - ElementRangeError(std::string func, size_t m, size_t mmax); + ElementRangeError(std::string func, size_t m, size_t mmax) : + CanteraError(func), m_(m), mmax_(mmax) {} + virtual std::string getMessage() const; + virtual std::string getClass() const { return "ElementRangeError"; } + +private: + size_t m_, mmax_; }; + //! Print a warning when a deprecated method is called. /*! * These methods are slated to go away in future releases of Cantera. diff --git a/samples/cxx/NASA_coeffs/NASA_coeffs.cpp b/samples/cxx/NASA_coeffs/NASA_coeffs.cpp index 6440c6329..9a608f250 100644 --- a/samples/cxx/NASA_coeffs/NASA_coeffs.cpp +++ b/samples/cxx/NASA_coeffs/NASA_coeffs.cpp @@ -96,8 +96,8 @@ int main() try { demoprog(); - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; } } diff --git a/samples/cxx/bvp/AxiStagnBVP.h b/samples/cxx/bvp/AxiStagnBVP.h index 5ad0a7dd2..a19cb8e09 100644 --- a/samples/cxx/bvp/AxiStagnBVP.h +++ b/samples/cxx/bvp/AxiStagnBVP.h @@ -132,8 +132,8 @@ int main() // write the solution to a CSV file. eqs.writeCSV(); return 0; - } catch (Cantera::CanteraError) { - Cantera::showErrors(std::cerr); + } catch (Cantera::CanteraError& err) { + std::cerr << err.what() << std::endl; return -1; } } diff --git a/samples/cxx/bvp/blasius.cpp b/samples/cxx/bvp/blasius.cpp index fd7a06c73..2b2133458 100644 --- a/samples/cxx/bvp/blasius.cpp +++ b/samples/cxx/bvp/blasius.cpp @@ -120,8 +120,8 @@ int main() // write the solution to a CSV file. eqs.writeCSV(); return 0; - } catch (Cantera::CanteraError) { - Cantera::showErrors(std::cerr); + } catch (Cantera::CanteraError& err) { + std::cerr << err.what() << std::endl; return -1; } } diff --git a/samples/cxx/combustor/combustor.cpp b/samples/cxx/combustor/combustor.cpp index 5aa62897f..c36a2f646 100644 --- a/samples/cxx/combustor/combustor.cpp +++ b/samples/cxx/combustor/combustor.cpp @@ -130,8 +130,8 @@ int main() return 0; } // handle exceptions thrown by Cantera - catch (CanteraError) { - showErrors(std::cout); + catch (CanteraError& err) { + std::cout << err.what() << std::endl; std::cout << " terminating... " << std::endl; appdelete(); return 1; diff --git a/samples/cxx/demo.cpp b/samples/cxx/demo.cpp index eb79e7af6..f9f5b0092 100644 --- a/samples/cxx/demo.cpp +++ b/samples/cxx/demo.cpp @@ -119,8 +119,8 @@ int main() try { demoprog(); - } catch (CanteraError) { - showErrors(std::cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; } } diff --git a/samples/cxx/flamespeed/flamespeed.cpp b/samples/cxx/flamespeed/flamespeed.cpp index 4404d5ca2..0528bbdea 100644 --- a/samples/cxx/flamespeed/flamespeed.cpp +++ b/samples/cxx/flamespeed/flamespeed.cpp @@ -65,8 +65,8 @@ int flamespeed(int np, void* p) try { equilibrate(gas,"HP"); - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; } double* yout=new double[nsp]; gas.getMassFractions(yout); @@ -260,8 +260,8 @@ int flamespeed(int np, void* p) fclose(FP); return 0; - } catch (CanteraError) { - showErrors(std::cerr); + } catch (CanteraError& err) { + std::cerr << err.what() << std::endl; std::cerr << "program terminating." << endl; return -1; } diff --git a/samples/cxx/kinetics1/kinetics1.cpp b/samples/cxx/kinetics1/kinetics1.cpp index 7ec0f1e46..42eae6e5a 100644 --- a/samples/cxx/kinetics1/kinetics1.cpp +++ b/samples/cxx/kinetics1/kinetics1.cpp @@ -120,8 +120,8 @@ int main() return retn; } // handle exceptions thrown by Cantera - catch (CanteraError) { - showErrors(cout); + catch (CanteraError& err) { + std::cout << err.what() << std::endl; cout << " terminating... " << endl; appdelete(); return -1; diff --git a/samples/cxx/rankine/rankine.cpp b/samples/cxx/rankine/rankine.cpp index 816f472a5..a3b2b0ae6 100644 --- a/samples/cxx/rankine/rankine.cpp +++ b/samples/cxx/rankine/rankine.cpp @@ -86,8 +86,8 @@ int main() try { return openRankine(0, 0); - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; return -1; } } diff --git a/samples/f77/demo_ftnlib.cpp b/samples/f77/demo_ftnlib.cpp index 9f7916b27..d29ebe4fd 100644 --- a/samples/f77/demo_ftnlib.cpp +++ b/samples/f77/demo_ftnlib.cpp @@ -61,9 +61,9 @@ Transport* _transptr() #endif // error handler -void handleError() +void handleError(CanteraError& err) { - showErrors(std::cout); + std::cout << err.what() << std::endl; exit(-1); } @@ -96,8 +96,8 @@ extern "C" { delete _gas; } _gas = new IdealGasMix(fin, fth); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } #ifdef WITH_TRANSPORT try { @@ -105,7 +105,7 @@ extern "C" { delete _trans; } _trans = newTransportMgr(trmodel,_gas,1); - } catch (CanteraError) { + } catch (CanteraError& err) { _trans = newTransportMgr("",_gas,1); } #endif @@ -146,8 +146,8 @@ extern "C" { { try { _gas->setState_TPX(*T, *P, X); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } } @@ -157,8 +157,8 @@ extern "C" { { try { _gas->setState_TPX(*T, *P, string(X, lenx)); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } } @@ -166,8 +166,8 @@ extern "C" { { try { _gas->setState_TRY(*T, *rho, Y); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } } @@ -175,8 +175,8 @@ extern "C" { { try { _gas->setState_TPY(*T, *p, Y); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } } @@ -184,8 +184,8 @@ extern "C" { { try { _gas->setState_SP(*s, *p); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } } @@ -295,8 +295,8 @@ extern "C" { } string optstr = string(opt, 2); equilibrate(*_gas, optstr.c_str()); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } } #endif @@ -350,8 +350,8 @@ extern "C" { { try { return _trans->viscosity(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return 0.0; } } @@ -360,8 +360,8 @@ extern "C" { { try { return _trans->thermalConductivity(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return 0.0; } } @@ -370,8 +370,8 @@ extern "C" { { try { _trans->getMixDiffCoeffs(diff); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } } @@ -379,8 +379,8 @@ extern "C" { { try { _trans->getThermalDiffCoeffs(dt); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } } #endif @@ -401,8 +401,8 @@ int main() { try { return MAIN__(); - } catch (CanteraError) { - showErrors(cerr); + } catch (CanteraError& err) { + std::cerr << err.what() << std::endl; exit(-1); } catch (...) { cout << "An exception was trapped. Program terminating." << endl; diff --git a/src/apps/cti2ctml.cpp b/src/apps/cti2ctml.cpp index dfffecad9..13e7393dd 100644 --- a/src/apps/cti2ctml.cpp +++ b/src/apps/cti2ctml.cpp @@ -81,8 +81,8 @@ int main(int argc, char** argv) //XML_Node *xd = new XML_Node(); //xc->copy(xd); - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; } return 0; diff --git a/src/base/application.cpp b/src/base/application.cpp index e0ae6155d..35bd35e16 100644 --- a/src/base/application.cpp +++ b/src/base/application.cpp @@ -457,30 +457,6 @@ XML_Node* Application::get_XML_File(std::string file, int debug) { XML_LOCK(); std::string path = ""; - /* - try { - path = findInputFile(file); - } - catch (CanteraError) { - string::size_type idot = file.rfind('.'); - string ext = ""; - if (idot != string::npos) { - ext = file.substr(idot, file.size()); - string ctifile = file.substr(0,idot)+".cti"; - try { - path = findInputFile(ctifile); - } - catch (CanteraError) { - path = findInputFile(file); - } - } - else - path = findInputFile(file); - } - */ - // The code above will try to process a cti file if the xml - // file is not found. But I (dgg) don't think it makes much sense, - // so it is replaced by: path = findInputFile(file); #ifdef _WIN32 // RFB: For Windows make the path POSIX compliant so code looking for directory diff --git a/src/base/ctexceptions.cpp b/src/base/ctexceptions.cpp index bccf493b7..21659da05 100644 --- a/src/base/ctexceptions.cpp +++ b/src/base/ctexceptions.cpp @@ -4,28 +4,66 @@ #include "cantera/base/global.h" #include "cantera/base/stringUtils.h" +#include +#include + namespace Cantera { // *** Exceptions *** -CanteraError::CanteraError(std::string procedure, std::string msg) -{ - Application::Instance()->addError(procedure, msg); -} +static const char* stars = "***********************************************************************\n"; -ArraySizeError::ArraySizeError(std::string proc, size_t sz, size_t reqd) : - CanteraError(proc, "Array size ("+int2str(sz)+ - ") too small. Must be at least "+int2str(reqd)) +CanteraError::CanteraError(std::string procedure, std::string msg) : + msg_(msg), + procedure_(procedure), + saved_(false) { } - -ElementRangeError::ElementRangeError(std::string func, size_t m, size_t mmax) : - CanteraError(func, "Element index " + int2str(m) + - " outside valid range of 0 to " + int2str(mmax-1)) +CanteraError::CanteraError(std::string procedure) : + procedure_(procedure), + saved_(false) { } +void CanteraError::save() +{ + if (!saved_) { + Application::Instance()->addError(procedure_, getMessage()); + saved_ = true; + } +} + +const char* CanteraError::what() const throw() { + try { + formattedMessage_ = stars; + formattedMessage_ += getClass() + " thrown by " + procedure_ + ":\n" + getMessage(); + if (formattedMessage_.compare(formattedMessage_.size()-1, 1, "\n")) { + formattedMessage_.append("\n"); + } + formattedMessage_ += stars; + } catch (...) { + // Something went terribly wrong and we couldn't even format the message. + } + return formattedMessage_.c_str(); + } + +std::string CanteraError::getMessage() const { + return msg_; +} + +std::string ArraySizeError::getMessage() const { + std::stringstream ss; + ss << "Array size (" << sz_ << ") too small. Must be at least " << reqd_ << "."; + return ss.str(); +} + +std::string ElementRangeError::getMessage() const { + std::stringstream ss; + ss << "Element index " << m_ << " outside valid range of 0 to " << (mmax_-1) << "."; + return ss.str(); +} + // *** Warnings *** void deprecatedMethod(std::string classnm, std::string oldnm, std::string newnm) @@ -44,5 +82,4 @@ void removeAtVersion(std::string func, std::string version) throw CanteraError("removeAtVersion: "+ func,"procedure has been removed."); } - } // namespace Cantera diff --git a/src/clib/Cabinet.h b/src/clib/Cabinet.h index cd754a1d9..da3701f61 100644 --- a/src/clib/Cabinet.h +++ b/src/clib/Cabinet.h @@ -91,7 +91,8 @@ public: M* old = data[i]; data.push_back(new M(*old)); return static_cast(data.size()) - 1; - } catch (Cantera::CanteraError) { + } catch (Cantera::CanteraError& err) { + err.save(); return -1; } catch (...) { return -999; @@ -110,7 +111,8 @@ public: M* dest = data[i]; *dest = *src; return 0; - } catch (Cantera::CanteraError) { + } catch (Cantera::CanteraError& err) { + err.save(); return -1; } catch (...) { return -999; diff --git a/src/clib/ct.cpp b/src/clib/ct.cpp index b3ccaa068..7dfe84b89 100644 --- a/src/clib/ct.cpp +++ b/src/clib/ct.cpp @@ -49,7 +49,8 @@ static PureFluidPhase* purefluid(int n) } else { throw CanteraError("purefluid","object is not a PureFluidPhase object"); } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return 0; } return 0; @@ -134,7 +135,8 @@ extern "C" { { try { ThermoCabinet::item(n).setTemperature(t); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -244,7 +246,8 @@ extern "C" { parseCompString(string(x), xx); p.setMoleFractionsByName(xx); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } //catch (...) {return ERR;} @@ -278,7 +281,8 @@ extern "C" { parseCompString(string(y), yy); p.setMassFractionsByName(yy); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -333,7 +337,8 @@ extern "C" { copy(spnm.c_str(), spnm.c_str() + lout, nm); nm[lout] = '\0'; return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } //catch (...) {return ERR;} @@ -347,7 +352,8 @@ extern "C" { copy(elnm.c_str(), elnm.c_str() + lout, nm); nm[lout] = '\0'; return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -357,7 +363,8 @@ extern "C" { { try { return ThermoCabinet::item(n).nAtoms(k,m); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -367,7 +374,8 @@ extern "C" { try { ThermoCabinet::item(n).addElement(string(name),weight); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -400,7 +408,8 @@ extern "C" { XML_Node& x = XmlCabinet::item(mxml); thermo_t* th = newPhase(x); return ThermoCabinet::add(th); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -419,7 +428,8 @@ extern "C" { { try { return ThermoCabinet::item(n).enthalpy_mole(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -428,7 +438,8 @@ extern "C" { { try { return ThermoCabinet::item(n).intEnergy_mole(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -437,7 +448,8 @@ extern "C" { { try { return ThermoCabinet::item(n).entropy_mole(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -446,7 +458,8 @@ extern "C" { { try { return ThermoCabinet::item(n).gibbs_mole(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -455,7 +468,8 @@ extern "C" { { try { return ThermoCabinet::item(n).cp_mole(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -464,7 +478,8 @@ extern "C" { { try { return ThermoCabinet::item(n).cv_mole(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -473,7 +488,8 @@ extern "C" { { try { return ThermoCabinet::item(n).pressure(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -482,7 +498,8 @@ extern "C" { { try { return ThermoCabinet::item(n).enthalpy_mass(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -491,7 +508,8 @@ extern "C" { { try { return ThermoCabinet::item(n).intEnergy_mass(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -500,7 +518,8 @@ extern "C" { { try { return ThermoCabinet::item(n).entropy_mass(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -509,7 +528,8 @@ extern "C" { { try { return ThermoCabinet::item(n).gibbs_mass(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -518,7 +538,8 @@ extern "C" { { try { return ThermoCabinet::item(n).cp_mass(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -527,7 +548,8 @@ extern "C" { { try { return ThermoCabinet::item(n).cv_mass(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -536,7 +558,8 @@ extern "C" { { try { return ThermoCabinet::item(n).electricPotential(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -573,7 +596,8 @@ extern "C" { "pressure cannot be negative"); ThermoCabinet::item(n).setPressure(p); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -589,7 +613,8 @@ extern "C" { throw CanteraError("th_set_HP", "temperature cannot be negative"); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -605,7 +630,8 @@ extern "C" { throw CanteraError("th_set_UV", "temperature cannot be negative"); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -615,7 +641,8 @@ extern "C" { try { ThermoCabinet::item(n).setState_SV(vals[0],vals[1]); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -625,7 +652,8 @@ extern "C" { try { ThermoCabinet::item(n).setState_SP(vals[0],vals[1]); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -637,7 +665,8 @@ extern "C" { equilibrate(ThermoCabinet::item(n), XY, solver, rtol, maxsteps, maxiter, loglevel); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -669,7 +698,8 @@ extern "C" { } else { return -10; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -685,7 +715,8 @@ extern "C" { } else { return -10; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -701,7 +732,8 @@ extern "C" { } else { return -10; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -739,7 +771,8 @@ extern "C" { { try { return purefluid(n)->satTemperature(p); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -748,7 +781,8 @@ extern "C" { { try { return purefluid(n)->satPressure(t); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -758,7 +792,8 @@ extern "C" { try { purefluid(n)->setState_Psat(p, x); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -768,7 +803,8 @@ extern "C" { try { purefluid(n)->setState_Tsat(t, x); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -845,7 +881,8 @@ extern "C" { } else { return 0; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -859,7 +896,8 @@ extern "C" { string defphase = string(default_phase); installReactionArrays(p, k, defphase); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -932,7 +970,8 @@ extern "C" { } else { return ERR; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -947,7 +986,8 @@ extern "C" { } else { return ERR; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -967,7 +1007,8 @@ extern "C" { } else { return ERR; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -982,7 +1023,8 @@ extern "C" { } else { return ERR; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1001,7 +1043,8 @@ extern "C" { } else { return ERR; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1017,7 +1060,8 @@ extern "C" { } else { return ERR; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1053,7 +1097,8 @@ extern "C" { return ERR; } return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1069,7 +1114,8 @@ extern "C" { } else { return ERR; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1085,7 +1131,8 @@ extern "C" { } else { return ERR; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1100,7 +1147,8 @@ extern "C" { } else { return ERR; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } //catch (...) {return ERR;} @@ -1116,7 +1164,8 @@ extern "C" { } else { return ERR; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1137,7 +1186,8 @@ extern "C" { } else { return ERR; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1162,7 +1212,8 @@ extern "C" { } else { return ERR; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1176,7 +1227,8 @@ extern "C" { copy(r.c_str(), r.c_str() + lout, buf); buf[lout] = '\0'; return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1190,7 +1242,8 @@ extern "C" { } else { return ERR; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1206,7 +1259,8 @@ extern "C" { "wrong kinetics manager type"); } return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1221,7 +1275,8 @@ extern "C" { try { Transport* tr = newTransportMgr(mstr, &t, loglevel); return TransportCabinet::add(tr); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1230,7 +1285,8 @@ extern "C" { { try { return TransportCabinet::item(n).viscosity(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1.0; } } @@ -1239,7 +1295,8 @@ extern "C" { { try { return TransportCabinet::item(n).thermalConductivity(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1.0; } } @@ -1249,7 +1306,8 @@ extern "C" { try { TransportCabinet::item(n).getThermalDiffCoeffs(dt); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1259,7 +1317,8 @@ extern "C" { try { TransportCabinet::item(n).getMixDiffCoeffs(d); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1269,7 +1328,8 @@ extern "C" { try { TransportCabinet::item(n).getBinaryDiffCoeffs(ld,d); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1279,7 +1339,8 @@ extern "C" { try { TransportCabinet::item(n).getMultiDiffCoeffs(ld,d); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1289,7 +1350,8 @@ extern "C" { try { TransportCabinet::item(n).setParameters(type, k, d); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1300,7 +1362,8 @@ extern "C" { try { TransportCabinet::item(n).getMolarFluxes(state1, state2, delta, fluxes); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1311,7 +1374,8 @@ extern "C" { try { TransportCabinet::item(n).getMassFluxes(state1, state2, delta, fluxes); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1326,7 +1390,8 @@ extern "C" { try { importPhase(node, &thrm); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1344,7 +1409,8 @@ extern "C" { try { importKinetics(node, phases, &k); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1363,7 +1429,8 @@ extern "C" { buf[s.size() - 1] = '\0'; return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1374,7 +1441,8 @@ extern "C" { bool stherm = (show_thermo != 0); writephase(ThermoCabinet::item(nth), stherm); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1440,7 +1508,8 @@ extern "C" { KineticsCabinet::clear(); TransportCabinet::clear(); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -1450,7 +1519,8 @@ extern "C" { try { ThermoCabinet::del(n); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } diff --git a/src/clib/ctbdry.cpp b/src/clib/ctbdry.cpp index 46c4e4c2d..89a307ab4 100644 --- a/src/clib/ctbdry.cpp +++ b/src/clib/ctbdry.cpp @@ -56,7 +56,8 @@ extern "C" { { try { BoundaryCabinet::item(i).setTemperature(t); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -66,7 +67,8 @@ extern "C" { { try { return dynamic_cast(&BoundaryCabinet::item(i))->spreadRate(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -76,7 +78,8 @@ extern "C" { { try { dynamic_cast(&BoundaryCabinet::item(i))->setSpreadRate(v); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -86,7 +89,8 @@ extern "C" { { try { BoundaryCabinet::item(i).setMdot(mdot); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -102,7 +106,8 @@ extern "C" { { try { BoundaryCabinet::item(i).setMoleFractions(xin); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -112,7 +117,8 @@ extern "C" { { try { BoundaryCabinet::item(i).setMoleFractions(string(xin)); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -126,7 +132,8 @@ extern "C" { InterfaceKinetics* k = dynamic_cast(&Cabinet::item(j)); srf->setKineticsMgr(k); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; diff --git a/src/clib/ctfunc.cpp b/src/clib/ctfunc.cpp index ff9f6418a..61646e610 100644 --- a/src/clib/ctfunc.cpp +++ b/src/clib/ctfunc.cpp @@ -87,7 +87,8 @@ extern "C" { r = new Func1(); } return FuncCabinet::add(r); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -138,7 +139,8 @@ extern "C" { std::copy(w.c_str(), w.c_str() + lout, nm); nm[lout] = '\0'; return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } diff --git a/src/clib/ctmultiphase.cpp b/src/clib/ctmultiphase.cpp index 4ba96e752..be14c6387 100644 --- a/src/clib/ctmultiphase.cpp +++ b/src/clib/ctmultiphase.cpp @@ -24,7 +24,8 @@ static bool checkSpecies(int i, size_t k) throw CanteraError("checkSpecies", "illegal species index ("+int2str(k)+") "); return true; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return false; } } @@ -36,7 +37,8 @@ static bool checkElement(int i, size_t m) throw CanteraError("checkElement", "illegal element index ("+int2str(m)+") "); return true; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return false; } } @@ -48,7 +50,8 @@ static bool checkPhase(int i, int n) throw CanteraError("checkPhase", "illegal phase index ("+int2str(n)+") "); return true; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return false; } } @@ -157,7 +160,8 @@ extern "C" { } mixCabinet::item(i).setMoles(n); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return ERR; } } @@ -168,7 +172,8 @@ extern "C" { try { mixCabinet::item(i).setMolesByName(string(n)); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -248,7 +253,8 @@ extern "C" { try { return equilibrate(mixCabinet::item(i), XY, rtol, maxsteps, maxiter, loglevel); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -270,7 +276,8 @@ extern "C" { " To use this feature add export WITH_VCS_NONIDEAL='y' to the preconfig file"); #endif return (double) retn; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -283,7 +290,8 @@ extern "C" { } mixCabinet::item(i).getChemPotentials(mu); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -298,7 +306,8 @@ extern "C" { } mixCabinet::item(i).getValidChemPotentials(bad_mu, mu, st); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } diff --git a/src/clib/ctonedim.cpp b/src/clib/ctonedim.cpp index 87d8db053..4bb6af051 100644 --- a/src/clib/ctonedim.cpp +++ b/src/clib/ctonedim.cpp @@ -52,7 +52,8 @@ extern "C" { try { DomainCabinet::clear(); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -91,7 +92,8 @@ extern "C" { copy(nm.c_str(), nm.c_str() + lout, buf); buf[lout] = '\0'; return static_cast(nm.size()); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -101,7 +103,8 @@ extern "C" { try { size_t n = DomainCabinet::item(i).componentIndex(string(name)); return n; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -110,7 +113,8 @@ extern "C" { { try { return DomainCabinet::item(i).grid(n); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -120,7 +124,8 @@ extern "C" { try { DomainCabinet::item(i).setBounds(n, lower, upper); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -129,7 +134,8 @@ extern "C" { { try { return DomainCabinet::item(i).upperBound(n); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -138,7 +144,8 @@ extern "C" { { try { return DomainCabinet::item(i).lowerBound(n); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -149,7 +156,8 @@ extern "C" { try { DomainCabinet::item(i).setTolerances(n, rtol, atol, itime); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -158,7 +166,8 @@ extern "C" { { try { return DomainCabinet::item(i).rtol(n); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -167,7 +176,8 @@ extern "C" { { try { return DomainCabinet::item(i).atol(n); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -177,7 +187,8 @@ extern "C" { try { DomainCabinet::item(i).setupGrid(npts, grid); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -188,7 +199,8 @@ extern "C" { string s = string(id); DomainCabinet::item(i).setID(s); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -200,7 +212,8 @@ extern "C" { string s = string(desc); DomainCabinet::item(i).setDesc(s); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -211,7 +224,8 @@ extern "C" { try { Inlet1D* i = new Inlet1D(); return DomainCabinet::add(i); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -221,7 +235,8 @@ extern "C" { try { Surf1D* i = new Surf1D(); return DomainCabinet::add(i); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -232,7 +247,8 @@ extern "C" { //writelog("in reactingsurf_new\n"); Domain1D* i = new ReactingSurf1D(); return DomainCabinet::add(i); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); writelog("error"); return -1; } @@ -243,7 +259,8 @@ extern "C" { try { Symm1D* i = new Symm1D(); return DomainCabinet::add(i); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -253,7 +270,8 @@ extern "C" { try { Outlet1D* i = new Outlet1D(); return DomainCabinet::add(i); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -263,7 +281,8 @@ extern "C" { try { OutletRes1D* i = new OutletRes1D(); return DomainCabinet::add(i); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -273,7 +292,8 @@ extern "C" { try { _bdry(i)->setMdot(mdot); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -283,7 +303,8 @@ extern "C" { try { _bdry(i)->setTemperature(t); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -293,7 +314,8 @@ extern "C" { try { _bdry(i)->setMoleFractions(string(x)); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -302,7 +324,8 @@ extern "C" { { try { return _bdry(i)->temperature(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -311,7 +334,8 @@ extern "C" { { try { return _bdry(i)->massFraction(k); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -320,7 +344,8 @@ extern "C" { { try { return _bdry(i)->mdot(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -333,7 +358,8 @@ extern "C" { dynamic_cast(&Cabinet::item(j)); srf->setKineticsMgr(k); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -346,7 +372,8 @@ extern "C" { return 0; } - catch (CanteraError) { + catch (CanteraError& err) { + err.save(); return -1; } } @@ -359,7 +386,8 @@ extern "C" { return 0; } - catch (CanteraError) { + catch (CanteraError& err) { + err.save(); return -1; } } @@ -383,7 +411,8 @@ extern "C" { } else { return -2; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -398,7 +427,8 @@ extern "C" { try { _stflow(i)->setTransport(TransportCabinet::item(itr), withSoret); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -412,7 +442,8 @@ extern "C" { try { _stflow(i)->enableSoret(withSoret); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -422,7 +453,8 @@ extern "C" { try { _stflow(i)->setPressure(p); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -438,7 +470,8 @@ extern "C" { } _stflow(i)->setFixedTempProfile(vpos, vtemp); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -453,7 +486,8 @@ extern "C" { _stflow(i)->fixSpecies(-1); } return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -468,7 +502,8 @@ extern "C" { _stflow(i)->fixTemperature(-1); } return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -490,7 +525,8 @@ extern "C" { Sim1D* s = new Sim1D(d); //writelog("in sim1D_new, ret Sim1D\n"); return SimCabinet::add(s); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -500,7 +536,8 @@ extern "C" { try { SimCabinet::clear(); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -517,7 +554,8 @@ extern "C" { try { SimCabinet::item(i).setValue(dom, comp, localPoint, value); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -533,7 +571,8 @@ extern "C" { } SimCabinet::item(i).setProfile(dom, comp, pv, vv); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -543,7 +582,8 @@ extern "C" { try { SimCabinet::item(i).setFlatProfile(dom, comp, v); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -566,7 +606,8 @@ extern "C" { try { SimCabinet::item(i).setTimeStep(stepsize, ns, nsteps); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -576,7 +617,8 @@ extern "C" { try { SimCabinet::item(i).getInitialSoln(); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -587,7 +629,8 @@ extern "C" { bool r = (refine_grid == 0 ? false : true); SimCabinet::item(i).solve(loglevel, r); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -597,7 +640,8 @@ extern "C" { try { SimCabinet::item(i).refine(loglevel); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -608,7 +652,8 @@ extern "C" { try { SimCabinet::item(i).setRefineCriteria(dom, ratio, slope, curve, prune); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -622,7 +667,8 @@ extern "C" { string sdesc = string(desc); SimCabinet::item(i).save(sname, sid, sdesc); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -634,7 +680,8 @@ extern "C" { string sid = string(id); SimCabinet::item(i).restore(sname, sid); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -644,7 +691,8 @@ extern "C" { try { SimCabinet::item(i).writeStats(printTime); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -653,7 +701,8 @@ extern "C" { { try { return (int) SimCabinet::item(i).domainIndex(string(name)); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -662,7 +711,8 @@ extern "C" { { try { return SimCabinet::item(i).value(idom, icomp, localPoint); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -671,7 +721,8 @@ extern "C" { { try { return SimCabinet::item(i).workValue(idom, icomp, localPoint); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -681,7 +732,8 @@ extern "C" { try { SimCabinet::item(i).eval(rdt, count); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -691,7 +743,8 @@ extern "C" { try { SimCabinet::item(i).setJacAge(ss_age, ts_age); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -701,7 +754,8 @@ extern "C" { try { SimCabinet::item(i).setTimeStepFactor(tfactor); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -716,7 +770,8 @@ extern "C" { SimCabinet::item(i).setMaxTimeStep(tsmax); } return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -726,7 +781,8 @@ extern "C" { try { SimCabinet::item(i).setFixedTemperature(temp); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -736,7 +792,8 @@ extern "C" { try { SimCabinet::item(i).evalSSJacobian(); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -745,7 +802,8 @@ extern "C" { { try { return SimCabinet::item(i).jacobian(m,n); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return DERR; } } @@ -754,7 +812,8 @@ extern "C" { { try { return SimCabinet::item(i).size(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } diff --git a/src/clib/ctreactor.cpp b/src/clib/ctreactor.cpp index e8964159d..6e0ad0b82 100644 --- a/src/clib/ctreactor.cpp +++ b/src/clib/ctreactor.cpp @@ -99,7 +99,8 @@ extern "C" { try { ReactorCabinet::item(i).advance(t); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -248,7 +249,8 @@ extern "C" { try { NetworkCabinet::item(i).addReactor(&ReactorCabinet::item(n)); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -329,7 +331,8 @@ extern "C" { throw CanteraError("install","Could not install flow device."); } return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } diff --git a/src/clib/ctxml.cpp b/src/clib/ctxml.cpp index be18299fc..14d532a18 100644 --- a/src/clib/ctxml.cpp +++ b/src/clib/ctxml.cpp @@ -35,7 +35,8 @@ extern "C" { try { XML_Node* x = get_XML_File(std::string(file), debug); return XmlCabinet::add(x); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -46,7 +47,8 @@ extern "C" { XmlCabinet::clear(); close_XML_File("all"); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -86,7 +88,8 @@ extern "C" { XmlCabinet::item(i).build(f); f.close(); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -96,7 +99,8 @@ extern "C" { try { get_CTML_Tree(&XmlCabinet::item(i), string(file), debug); return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -114,7 +118,8 @@ extern "C" { } else throw CanteraError("xml_attrib","node " " has no attribute '"+ky+"'"); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -127,7 +132,8 @@ extern "C" { string val = string(value); XML_Node& node = XmlCabinet::item(i); node.addAttribute(ky, val); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -139,7 +145,8 @@ extern "C" { string c = string(comment); XML_Node& node = XmlCabinet::item(i); node.addComment(c); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -151,7 +158,8 @@ extern "C" { XML_Node& node = XmlCabinet::item(i); const string v = node.name(); strncpy(tag, v.c_str(), 80); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -163,7 +171,8 @@ extern "C" { XML_Node& node = XmlCabinet::item(i); const string v = node.value(); strncpy(value, v.c_str(), 80); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -175,7 +184,8 @@ extern "C" { XML_Node& node = XmlCabinet::item(i); XML_Node& c = node.child(string(loc)); return XmlCabinet::add(&c); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -187,7 +197,8 @@ extern "C" { XML_Node& node = XmlCabinet::item(i); XML_Node& c = node.child(m); return XmlCabinet::add(&c); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -203,7 +214,8 @@ extern "C" { } else { throw CanteraError("xml_find_id","id not found: "+string(id)); } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -219,7 +231,8 @@ extern "C" { } else throw CanteraError("xml_findByName","name "+string(nm) +" not found"); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -230,7 +243,8 @@ extern "C" { try { XML_Node& node = XmlCabinet::item(i); return (int) node.nChildren(); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } } @@ -241,8 +255,8 @@ extern "C" { XML_Node& node = XmlCabinet::item(i); XML_Node& c = node.addChild(string(name),string(value)); return XmlCabinet::add(&c); - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + cout << err.what() << endl; return -1; } return 0; @@ -255,7 +269,8 @@ extern "C" { XML_Node& chld = XmlCabinet::item(j); XML_Node& c = node.addChild(chld); return XmlCabinet::add(&c); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -273,7 +288,8 @@ extern "C" { "file "+string(file)+" not found."); } return 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; @@ -300,7 +316,8 @@ extern "C" { for (size_t i = 0; i < nv; i++) { data[i] = v[i]; } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); return -1; } return 0; diff --git a/src/converters/ck2ct.cpp b/src/converters/ck2ct.cpp index 46bf6fd1a..d2eb89c30 100644 --- a/src/converters/ck2ct.cpp +++ b/src/converters/ck2ct.cpp @@ -660,7 +660,8 @@ int convert_ck(const char* in_file, const char* db_file, } bool hastransport = (trfile != ""); ck2ct(f, idtag, r, hastransport); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); fclose(f); return -1; } diff --git a/src/equil/ChemEquil.cpp b/src/equil/ChemEquil.cpp index 3b035c402..bda0d18a0 100644 --- a/src/equil/ChemEquil.cpp +++ b/src/equil/ChemEquil.cpp @@ -309,7 +309,8 @@ int ChemEquil::setInitialMoles(thermo_t& s, vector_fp& elMoleGoal, delete e; delete mp; iok = 0; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); delete e; delete mp; iok = -1; @@ -416,7 +417,8 @@ int ChemEquil::estimateElementPotentials(thermo_t& s, vector_fp& lambda_RT, int info; try { info = solve(aa, DATA_PTR(b)); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); if (loglevel > 0) { addLogEntry("failed to estimate initial element potentials."); } @@ -912,7 +914,8 @@ next: */ try { info = solve(jac, DATA_PTR(res_trial)); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); addLogEntry("Jacobian is singular."); endLogGroup(); // iteration endLogGroup(); // equilibrate @@ -1855,7 +1858,8 @@ int ChemEquil::estimateEP_Brinkley(thermo_t& s, vector_fp& x, try { solve(a1, DATA_PTR(resid)); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); addLogEntry("estimateEP_Brinkley:Jacobian is singular."); #ifdef DEBUG_MODE if (ChemEquil_print_lvl > 0) { diff --git a/src/equil/MultiPhase.cpp b/src/equil/MultiPhase.cpp index bf3b9e202..48e7cbf40 100644 --- a/src/equil/MultiPhase.cpp +++ b/src/equil/MultiPhase.cpp @@ -694,6 +694,7 @@ doublereal MultiPhase::equilibrate(int XY, doublereal err, try { e->equilibrate(XY, err, maxsteps, loglevel); } catch (CanteraError& err) { + err.save(); if (loglevel > 0) { endLogGroup(); } @@ -795,7 +796,8 @@ doublereal MultiPhase::equilibrate(int XY, doublereal err, } - catch (CanteraError&) { + catch (CanteraError& err) { + err.save(); if (!strt) { if (loglevel > 0) addLogEntry("no convergence", @@ -887,7 +889,8 @@ doublereal MultiPhase::equilibrate(int XY, doublereal err, } } - catch (CanteraError&) { + catch (CanteraError& err) { + err.save(); if (!strt) { if (loglevel > 0) { addLogEntry("no convergence", diff --git a/src/equil/equilibrate.cpp b/src/equil/equilibrate.cpp index 057593d6f..b7933b89c 100644 --- a/src/equil/equilibrate.cpp +++ b/src/equil/equilibrate.cpp @@ -50,6 +50,7 @@ doublereal equilibrate(MultiPhase& s, const char* XY, } return err; } catch (CanteraError& err) { + err.save(); if (loglevel > 0) { addLogEntry("Failure.",lastErrorMessage()); endLogGroup("equilibrate"); @@ -143,6 +144,7 @@ int equilibrate(thermo_t& s, const char* XY, int solver, delete m; retn = nAttempts; } catch (CanteraError& err) { + err.save(); if (loglevel > 0) { addLogEntry("VCSnonideal solver failed."); } @@ -177,6 +179,7 @@ int equilibrate(thermo_t& s, const char* XY, int solver, delete m; retn = nAttempts; } catch (CanteraError& err) { + err.save(); if (loglevel > 0) { addLogEntry("MultiPhaseEquil solver failed."); } @@ -229,6 +232,7 @@ int equilibrate(thermo_t& s, const char* XY, int solver, } catch (CanteraError& err) { + err.save(); delete e; if (loglevel > 0) { addLogEntry("ChemEquil solver failed."); diff --git a/src/equil/vcs_equilibrate.cpp b/src/equil/vcs_equilibrate.cpp index 1ea154923..7ba1886cb 100644 --- a/src/equil/vcs_equilibrate.cpp +++ b/src/equil/vcs_equilibrate.cpp @@ -129,6 +129,7 @@ int vcs_equilibrate(thermo_t& s, const char* XY, } delete m; } catch (CanteraError& err) { + err.save(); addLogEntry("MultiPhaseEquil solver failed."); delete m; throw err; @@ -145,6 +146,7 @@ int vcs_equilibrate(thermo_t& s, const char* XY, delete m; retn = 1; } catch (CanteraError& err) { + err.save(); if (loglevel > 0) { addLogEntry("MultiPhaseEquil solver failed."); } @@ -177,6 +179,7 @@ int vcs_equilibrate(thermo_t& s, const char* XY, addLogEntry("ChemEquil solver succeeded."); } } catch (CanteraError& err) { + err.save(); if (loglevel > 0) { addLogEntry("ChemEquil solver failed."); } @@ -344,6 +347,7 @@ int vcs_equilibrate_1(MultiPhase& s, int ixy, } delete eqsolve; } catch (CanteraError& e) { + e.save(); retn = -1; addLogEntry("Failure.", lastErrorMessage()); endLogGroup("equilibrate"); @@ -359,7 +363,7 @@ int vcs_equilibrate_1(MultiPhase& s, int ixy, return 0; } catch (CanteraError& e) { - + e.save(); addLogEntry("Failure.",lastErrorMessage()); endLogGroup("equilibrate"); diff --git a/src/fortran/fct.cpp b/src/fortran/fct.cpp index 331211b6f..0b6e82e46 100644 --- a/src/fortran/fct.cpp +++ b/src/fortran/fct.cpp @@ -71,8 +71,9 @@ std::string f2string(const char* s, ftnlen n) return ss; } -static void handleError() +static void handleError(CanteraError& err) { + err.save(); error(lastErrorMessage()); } @@ -88,8 +89,8 @@ extern "C" { std::string sproc = f2string(proc, proclen); std::string smsg = f2string(msg, msglen); throw CanteraError(sproc, smsg); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } return -1; @@ -108,8 +109,8 @@ extern "C" { nm[nn] = ' '; } return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -214,8 +215,8 @@ extern "C" { parseCompString(f2string(x, lx), xx); p->setMoleFractionsByName(xx); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -243,8 +244,8 @@ extern "C" { parseCompString(f2string(y, leny), yy); p->setMassFractionsByName(yy); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -276,8 +277,8 @@ extern "C" { nm[nn] = ' '; } return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -292,8 +293,8 @@ extern "C" { nm[nn] = ' '; } return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -303,8 +304,8 @@ extern "C" { { try { return _fph(n)->nAtoms(*k-1,*m-1); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -320,8 +321,8 @@ extern "C" { XML_Node* x = _xml(mxml); thermo_t* th = newPhase(*x); return ThermoCabinet::add(th); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -340,8 +341,8 @@ extern "C" { { try { return _fth(n)->enthalpy_mole(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return DERR; } } @@ -350,8 +351,8 @@ extern "C" { { try { return _fth(n)->intEnergy_mole(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return DERR; } } @@ -360,8 +361,8 @@ extern "C" { { try { return _fth(n)->entropy_mole(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return DERR; } } @@ -370,8 +371,8 @@ extern "C" { { try { return _fth(n)->gibbs_mole(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return DERR; } } @@ -380,8 +381,8 @@ extern "C" { { try { return _fth(n)->cp_mole(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return DERR; } } @@ -390,8 +391,8 @@ extern "C" { { try { return _fth(n)->cv_mole(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return DERR; } } @@ -400,8 +401,8 @@ extern "C" { { try { return _fth(n)->pressure(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return DERR; } } @@ -410,8 +411,8 @@ extern "C" { { try { return _fth(n)->enthalpy_mass(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return DERR; } } @@ -420,8 +421,8 @@ extern "C" { { try { return _fth(n)->intEnergy_mass(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return DERR; } } @@ -430,8 +431,8 @@ extern "C" { { try { return _fth(n)->entropy_mass(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return DERR; } } @@ -440,8 +441,8 @@ extern "C" { { try { return _fth(n)->gibbs_mass(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return DERR; } } @@ -450,8 +451,8 @@ extern "C" { { try { return _fth(n)->cp_mass(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return DERR; } } @@ -460,8 +461,8 @@ extern "C" { { try { return _fth(n)->cv_mass(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return DERR; } } @@ -478,8 +479,8 @@ extern "C" { try { _fth(n)->setPressure(*p); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -489,8 +490,8 @@ extern "C" { try { _fth(n)->setState_HP(*v1, *v2); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -500,8 +501,8 @@ extern "C" { try { _fth(n)->setState_UV(*v1, *v2); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -511,8 +512,8 @@ extern "C" { try { _fth(n)->setState_SV(*v1, *v2); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -522,8 +523,8 @@ extern "C" { try { _fth(n)->setState_SP(*v1, *v2); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -533,8 +534,8 @@ extern "C" { try { equilibrate(*_fth(n), f2string(XY,lenxy).c_str()); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -606,8 +607,8 @@ extern "C" { } else { return 0; } - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return 999; } } @@ -685,8 +686,8 @@ extern "C" { try { k->getFwdRatesOfProgress(fwdROP); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -697,8 +698,8 @@ extern "C" { try { k->getRevRatesOfProgress(revROP); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -714,8 +715,8 @@ extern "C" { Kinetics* k = _fkin(n); k->getNetRatesOfProgress(netROP); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -726,8 +727,8 @@ extern "C" { Kinetics* k = _fkin(n); k->getCreationRates(cdot); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -738,8 +739,8 @@ extern "C" { Kinetics* k = _fkin(n); k->getDestructionRates(ddot); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -750,8 +751,8 @@ extern "C" { Kinetics* k = _fkin(n); k->getNetProductionRates(wdot); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -767,8 +768,8 @@ extern "C" { Kinetics* k = _fkin(n); k->getEquilibriumConstants(kc); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -784,8 +785,8 @@ extern "C" { buf[nn] = ' '; } return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -795,8 +796,8 @@ extern "C" { try { _fkin(n)->setMultiplier(*i-1,*v); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -812,8 +813,8 @@ extern "C" { "wrong kinetics manager type"); } return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -828,8 +829,8 @@ extern "C" { try { Transport* tr = newTransportMgr(mstr, t, *loglevel); return TransportCabinet::add(tr); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -838,8 +839,8 @@ extern "C" { { try { return _ftrans(n)->viscosity(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return DERR; } } @@ -848,8 +849,8 @@ extern "C" { { try { return _ftrans(n)->thermalConductivity(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return DERR; } } @@ -859,8 +860,8 @@ extern "C" { try { _ftrans(n)->getThermalDiffCoeffs(dt); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -870,8 +871,8 @@ extern "C" { try { _ftrans(n)->getMixDiffCoeffs(d); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -881,8 +882,8 @@ extern "C" { try { _ftrans(n)->getBinaryDiffCoeffs(*ld,d); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -892,8 +893,8 @@ extern "C" { try { _ftrans(n)->getMultiDiffCoeffs(*ld,d); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -903,8 +904,8 @@ extern "C" { try { _ftrans(n)->setParameters(*type, *k, d); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -954,8 +955,8 @@ extern "C" { } return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } diff --git a/src/fortran/fctxml.cpp b/src/fortran/fctxml.cpp index 6f62b98ce..dcf964eb5 100644 --- a/src/fortran/fctxml.cpp +++ b/src/fortran/fctxml.cpp @@ -27,8 +27,9 @@ inline XML_Node* _xml(const integer* i) return &XmlCabinet::item(*i); } -static void handleError() +static void handleError(CanteraError& err) { + err.save(); Cantera::error(Cantera::lastErrorMessage()); } @@ -53,8 +54,8 @@ extern "C" { XML_Node* x = Cantera::get_XML_File(f2string(file, filelen)); int ix = XmlCabinet::add(x); return ix; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -65,8 +66,8 @@ extern "C" { XmlCabinet::clear(); Cantera::close_XML_File("all"); return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); return -1; } } @@ -105,8 +106,8 @@ extern "C" { } else throw CanteraError("fxml_attrib","node " " has no attribute '"+ky+"'"); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } return 0; } @@ -119,8 +120,8 @@ extern "C" { std::string val = f2string(value, valuelen); XML_Node& node = *_xml(i); node.addAttribute(ky, val); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } return 0; } @@ -132,8 +133,8 @@ extern "C" { std::string c = f2string(comment, commentlen); XML_Node& node = *_xml(i); node.addComment(c); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } return 0; } @@ -144,8 +145,8 @@ extern "C" { XML_Node& node = *_xml(i); const std::string v = node.name(); strncpy(tag, v.c_str(), taglen); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } return 0; } @@ -156,8 +157,8 @@ extern "C" { XML_Node& node = *_xml(i); const std::string v = node.value(); strncpy(value, v.c_str(), valuelen); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } return 0; } @@ -168,8 +169,8 @@ extern "C" { XML_Node& node = *_xml(i); XML_Node& c = node.child(f2string(loc, loclen)); return XmlCabinet::add(&c); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } return 0; } @@ -180,8 +181,8 @@ extern "C" { XML_Node& node = *_xml(i); XML_Node& c = node.child(*m); return XmlCabinet::add(&c); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } return 0; } @@ -196,8 +197,8 @@ extern "C" { } else { throw CanteraError("fxml_find_id","id not found: "+f2string(id, idlen)); } - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } return 0; } @@ -212,8 +213,8 @@ extern "C" { } else throw CanteraError("fxml_findByName","name "+f2string(nm, nmlen) +" not found"); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } return 0; } @@ -223,8 +224,8 @@ extern "C" { try { XML_Node& node = *_xml(i); return node.nChildren(); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } return 0; } @@ -237,8 +238,8 @@ extern "C" { XML_Node& c = node.addChild(f2string(name, namelen), f2string(value,valuelen)); return XmlCabinet::add(&c); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } return 0; } @@ -250,8 +251,8 @@ extern "C" { XML_Node& chld = *_xml(j); XML_Node& c = node.addChild(chld); return XmlCabinet::add(&c); - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } return 0; } @@ -269,8 +270,8 @@ extern "C" { "file "+f2string(file, filelen)+" not found."); } return 0; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } return 0; } @@ -298,8 +299,8 @@ extern "C" { data[i] = v[i]; } //n = nv; - } catch (CanteraError) { - handleError(); + } catch (CanteraError& err) { + handleError(err); } return 0; } diff --git a/src/kinetics/importKinetics.cpp b/src/kinetics/importKinetics.cpp index 606cc6db0..ec95e3cc4 100644 --- a/src/kinetics/importKinetics.cpp +++ b/src/kinetics/importKinetics.cpp @@ -1201,7 +1201,8 @@ bool buildSolutionFromXML(XML_Node& root, std::string id, std::string nm, importKinetics(*x, phases, k); return true; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); throw CanteraError("buildSolutionFromXML","error encountered"); return false; } diff --git a/src/oneD/Sim1D.cpp b/src/oneD/Sim1D.cpp index 1ffb0a08b..1797971f1 100644 --- a/src/oneD/Sim1D.cpp +++ b/src/oneD/Sim1D.cpp @@ -304,8 +304,8 @@ void Sim1D::solve(int loglevel, bool refine_grid) } - catch (CanteraError) { - + catch (CanteraError& err) { + err.save(); popError(); char buf[100]; if (loglevel > 0) { diff --git a/src/thermo/MolalityVPSSTP.cpp b/src/thermo/MolalityVPSSTP.cpp index 3bbca08f9..404c5ca76 100644 --- a/src/thermo/MolalityVPSSTP.cpp +++ b/src/thermo/MolalityVPSSTP.cpp @@ -899,7 +899,8 @@ std::string MolalityVPSSTP::report(bool show_thermo) const sprintf(p, " heat capacity c_v %12.6g %12.4g J/K\n", cv_mass(), cv_mole()); s += p; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); sprintf(p, " heat capacity c_v \n"); s += p; } @@ -940,8 +941,8 @@ std::string MolalityVPSSTP::report(bool show_thermo) const s += p; } } - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } return s; } @@ -988,29 +989,29 @@ void MolalityVPSSTP::reportCSV(std::ofstream& csvFile) const getMolalities(&temp[0]); pNames.push_back("Molal"); data.push_back(temp); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getChemPotentials(&temp[0]); pNames.push_back("Chem. Pot. (J/kmol)"); data.push_back(temp); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getStandardChemPotentials(&temp[0]); pNames.push_back("Chem. Pot. SS (J/kmol)"); data.push_back(temp); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getMolalityActivityCoefficients(&temp[0]); pNames.push_back("Molal Act. Coeff."); data.push_back(temp); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getActivities(&temp[0]); @@ -1021,43 +1022,43 @@ void MolalityVPSSTP::reportCSV(std::ofstream& csvFile) const double pH = -log(temp[iHp]) / log(10.0); csvFile << setw(tabL) << "pH = " << setw(tabS) << pH << endl; } - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getPartialMolarEnthalpies(&temp[0]); pNames.push_back("Part. Mol Enthalpy (J/kmol)"); data.push_back(temp); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getPartialMolarEntropies(&temp[0]); pNames.push_back("Part. Mol. Entropy (J/K/kmol)"); data.push_back(temp); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getPartialMolarIntEnergies(&temp[0]); pNames.push_back("Part. Mol. Energy (J/kmol)"); data.push_back(temp); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getPartialMolarCp(&temp[0]); pNames.push_back("Part. Mol. Cp (J/K/kmol"); data.push_back(temp); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getPartialMolarVolumes(&temp[0]); pNames.push_back("Part. Mol. Cv (J/K/kmol)"); data.push_back(temp); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } csvFile << endl << setw(tabS) << "Species,"; @@ -1084,8 +1085,8 @@ void MolalityVPSSTP::reportCSV(std::ofstream& csvFile) const csvFile << endl; } } - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } } diff --git a/src/thermo/MolarityIonicVPSSTP.cpp b/src/thermo/MolarityIonicVPSSTP.cpp index ee134bae8..1c767de5e 100644 --- a/src/thermo/MolarityIonicVPSSTP.cpp +++ b/src/thermo/MolarityIonicVPSSTP.cpp @@ -819,14 +819,15 @@ std::string MolarityIonicVPSSTP::report(bool show_thermo) const sprintf(p, " heat capacity c_v %12.6g %12.4g J/K\n", cv_mass(), cv_mole()); s += p; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); sprintf(p, " heat capacity c_v \n"); s += p; } } - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } return s; } diff --git a/src/thermo/PseudoBinaryVPSSTP.cpp b/src/thermo/PseudoBinaryVPSSTP.cpp index 6098bb97d..68e62d192 100644 --- a/src/thermo/PseudoBinaryVPSSTP.cpp +++ b/src/thermo/PseudoBinaryVPSSTP.cpp @@ -360,14 +360,15 @@ std::string PseudoBinaryVPSSTP::report(bool show_thermo) const sprintf(p, " heat capacity c_v %12.6g %12.4g J/K\n", cv_mass(), cv_mole()); s += p; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); sprintf(p, " heat capacity c_v \n"); s += p; } } - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } return s; } diff --git a/src/thermo/PureFluidPhase.cpp b/src/thermo/PureFluidPhase.cpp index b5e10a7f4..6fbc757d3 100644 --- a/src/thermo/PureFluidPhase.cpp +++ b/src/thermo/PureFluidPhase.cpp @@ -613,7 +613,8 @@ std::string PureFluidPhase::report(bool show_thermo) const sprintf(p, " heat capacity c_v %12.6g %12.4g J/K\n", cv_mass(), cv_mole()); s += p; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); sprintf(p, " heat capacity c_v \n"); s += p; } @@ -661,8 +662,8 @@ std::string PureFluidPhase::report(bool show_thermo) const } } //} - catch (CanteraError) { - ; + catch (CanteraError& err) { + err.save(); } return s; } @@ -723,64 +724,64 @@ void PureFluidPhase::reportCSV(std::ofstream& csvFile) const getMassFractions(&y[0]); pNames.push_back("Y"); data.push_back(y); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getChemPotentials(&mu[0]); pNames.push_back("Chem. Pot (J/kmol)"); data.push_back(mu); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getActivities(&a[0]); pNames.push_back("Activity"); data.push_back(a); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getActivityCoefficients(&ac[0]); pNames.push_back("Act. Coeff."); data.push_back(ac); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getPartialMolarEnthalpies(&hbar[0]); pNames.push_back("Part. Mol Enthalpy (J/kmol)"); data.push_back(hbar); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getPartialMolarEntropies(&sbar[0]); pNames.push_back("Part. Mol. Entropy (J/K/kmol)"); data.push_back(sbar); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getPartialMolarIntEnergies(&ubar[0]); pNames.push_back("Part. Mol. Energy (J/kmol)"); data.push_back(ubar); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getPartialMolarCp(&cpbar[0]); pNames.push_back("Part. Mol. Cp (J/K/kmol"); data.push_back(cpbar); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getPartialMolarVolumes(&vbar[0]); pNames.push_back("Part. Mol. Cv (J/K/kmol)"); data.push_back(vbar); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } csvFile << endl << setw(tabS) << "Species,"; @@ -807,8 +808,8 @@ void PureFluidPhase::reportCSV(std::ofstream& csvFile) const csvFile << endl; } } - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } } } diff --git a/src/thermo/ThermoPhase.cpp b/src/thermo/ThermoPhase.cpp index 59d64cc0f..480f5f837 100644 --- a/src/thermo/ThermoPhase.cpp +++ b/src/thermo/ThermoPhase.cpp @@ -190,7 +190,8 @@ void ThermoPhase::setState_TPX(doublereal t, doublereal p, const std::string& x) } try { parseCompString(x, xx); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); throw CanteraError("setState_TPX", "Unknown species in composition map: "+ x); } @@ -224,7 +225,8 @@ void ThermoPhase::setState_TPY(doublereal t, doublereal p, } try { parseCompString(y, yy); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); throw CanteraError("setState_TPY", "Unknown species in composition map: "+ y); } @@ -1284,7 +1286,8 @@ std::string ThermoPhase::report(bool show_thermo) const sprintf(p, " heat capacity c_v %12.6g %12.4g J/K\n", cv_mass(), cv_mole()); s += p; - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); sprintf(p, " heat capacity c_v \n"); s += p; } @@ -1332,8 +1335,8 @@ std::string ThermoPhase::report(bool show_thermo) const } } //} - catch (CanteraError) { - ; + catch (CanteraError& err) { + err.save(); } return s; } @@ -1395,64 +1398,64 @@ void ThermoPhase::reportCSV(std::ofstream& csvFile) const getMassFractions(y); pNames.push_back("Y"); data.push_back(y); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getChemPotentials(mu); pNames.push_back("Chem. Pot (J/kmol)"); data.push_back(mu); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getActivities(a); pNames.push_back("Activity"); data.push_back(a); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getActivityCoefficients(ac); pNames.push_back("Act. Coeff."); data.push_back(ac); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getPartialMolarEnthalpies(hbar); pNames.push_back("Part. Mol Enthalpy (J/kmol)"); data.push_back(hbar); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getPartialMolarEntropies(sbar); pNames.push_back("Part. Mol. Entropy (J/K/kmol)"); data.push_back(sbar); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getPartialMolarIntEnergies(ubar); pNames.push_back("Part. Mol. Energy (J/kmol)"); data.push_back(ubar); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getPartialMolarCp(cpbar); pNames.push_back("Part. Mol. Cp (J/K/kmol"); data.push_back(cpbar); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } try { getPartialMolarVolumes(vbar); pNames.push_back("Part. Mol. Cv (J/K/kmol)"); data.push_back(vbar); - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } csvFile << endl << setw(tabS) << "Species,"; @@ -1490,8 +1493,8 @@ void ThermoPhase::reportCSV(std::ofstream& csvFile) const delete [] cpbar; delete [] vbar; - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } } diff --git a/src/transport/MultiTransport.cpp b/src/transport/MultiTransport.cpp index 91b8adef0..bd097325b 100644 --- a/src/transport/MultiTransport.cpp +++ b/src/transport/MultiTransport.cpp @@ -386,7 +386,8 @@ void MultiTransport::solveLMatrixEquation() copy(m_b.begin(), m_b.end(), m_a.begin()); try { solve(m_Lmatrix, DATA_PTR(m_a)); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); //if (info != 0) { throw CanteraError("MultiTransport::solveLMatrixEquation", "error in solving L matrix."); diff --git a/src/transport/TransportFactory.cpp b/src/transport/TransportFactory.cpp index 36b06fe04..129e81549 100644 --- a/src/transport/TransportFactory.cpp +++ b/src/transport/TransportFactory.cpp @@ -915,8 +915,8 @@ void TransportFactory::getTransportData(const std::vector &xspe "negative rotation relaxation number"); datatable[name] = data; - } catch (CanteraError) { - ; + } catch (CanteraError& err) { + err.save(); } } @@ -1078,8 +1078,9 @@ void TransportFactory::getLiquidSpeciesTransportData(const std::vector(name,data)); } - } catch (CanteraError yy) { - throw yy; + } catch (CanteraError& err) { + err.save(); + throw err; } } @@ -1218,12 +1219,9 @@ void TransportFactory::getLiquidInteractionsTransportData(const XML_Node& transp } } } - } catch (CanteraError) { - showErrors(std::cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; } - //catch(CanteraError) { - // ; - //} return; } diff --git a/test_problems/ChemEquil_gri_matrix/gri_matrix.cpp b/test_problems/ChemEquil_gri_matrix/gri_matrix.cpp index 2b2e43aba..691340091 100644 --- a/test_problems/ChemEquil_gri_matrix/gri_matrix.cpp +++ b/test_problems/ChemEquil_gri_matrix/gri_matrix.cpp @@ -51,9 +51,9 @@ int main(int argc, char** argv) << endl; exit(-1); } - } catch (CanteraError) { + } catch (CanteraError& err) { cout << g; - showErrors(cerr); + std::cerr << err.what() << std::endl; cerr << "ERROR: equilibration step failed at " << " T = " << T << " Pres = " << pres @@ -87,9 +87,9 @@ int main(int argc, char** argv) << endl; exit(-1); } - } catch (CanteraError) { + } catch (CanteraError& err) { cout << g; - showErrors(cerr); + std::cerr << err.what() << std::endl; cerr << "ERROR: equilibration step failed at " << " T = " << T << " Pres = " << pres @@ -125,9 +125,9 @@ int main(int argc, char** argv) << endl; exit(-1); } - } catch (CanteraError) { + } catch (CanteraError& err) { cout << g; - showErrors(cerr); + std::cerr << err.what() << std::endl; cerr << "ERROR: equilibration step failed at " << " T = " << T << " Pres = " << pres @@ -163,9 +163,9 @@ int main(int argc, char** argv) << endl; exit(-1); } - } catch (CanteraError) { + } catch (CanteraError& err) { cout << g; - showErrors(cerr); + std::cerr << err.what() << std::endl; cerr << "ERROR: equilibration step failed at " << " T = " << T << " Pres = " << pres @@ -207,8 +207,8 @@ int main(int argc, char** argv) << " Pres = " << pres << endl; } - } catch (CanteraError) { - showErrors(cerr); + } catch (CanteraError& err) { + std::cerr << err.what() << std::endl; cerr << "ERROR: equilibration step failed at " << " T = " << T << " Pres = " << pres @@ -235,8 +235,8 @@ int main(int argc, char** argv) cout << "NUMBER OF FAILURES = " << numFail << endl; return numFail; - } catch (CanteraError) { - showErrors(cerr); + } catch (CanteraError& err) { + std::cerr << err.what() << std::endl; cerr << "ERROR: program terminating due to unforeseen circumstances." << endl; return -1; } diff --git a/test_problems/ChemEquil_gri_pairs/gri_pairs.cpp b/test_problems/ChemEquil_gri_pairs/gri_pairs.cpp index 2c393be9c..18512be9b 100644 --- a/test_problems/ChemEquil_gri_pairs/gri_pairs.cpp +++ b/test_problems/ChemEquil_gri_pairs/gri_pairs.cpp @@ -61,8 +61,8 @@ int main(int argc, char** argv) return 0; - } catch (CanteraError) { - showErrors(cerr); + } catch (CanteraError& err) { + std::cerr << err.what() << std::endl; cerr << "program terminating." << endl; return -1; } diff --git a/test_problems/ChemEquil_ionizedGas/ionizedGasEquil.cpp b/test_problems/ChemEquil_ionizedGas/ionizedGasEquil.cpp index f5d814f59..82915fdde 100644 --- a/test_problems/ChemEquil_ionizedGas/ionizedGasEquil.cpp +++ b/test_problems/ChemEquil_ionizedGas/ionizedGasEquil.cpp @@ -81,8 +81,9 @@ int main(int argc, char** argv) fclose(FF); } - catch (CanteraError) { - showErrors(); + catch (CanteraError& err) { + std::cout << err.what() << std::endl; + return -1; } return 0; } diff --git a/test_problems/ChemEquil_red1/basopt_red1.cpp b/test_problems/ChemEquil_red1/basopt_red1.cpp index a0eda6b9b..fc60c8673 100644 --- a/test_problems/ChemEquil_red1/basopt_red1.cpp +++ b/test_problems/ChemEquil_red1/basopt_red1.cpp @@ -47,8 +47,8 @@ int main(int argc, char** argv) cout << g; return 0; - } catch (CanteraError) { - showErrors(cerr); + } catch (CanteraError& err) { + std::cerr << err.what() << std::endl; cerr << "program terminating." << endl; return -1; } diff --git a/test_problems/CpJump/CpJump.cpp b/test_problems/CpJump/CpJump.cpp index 6c1258fea..395f901e0 100644 --- a/test_problems/CpJump/CpJump.cpp +++ b/test_problems/CpJump/CpJump.cpp @@ -29,8 +29,8 @@ int main(int argc, char** argv) return 0; - } catch (CanteraError) { - showErrors(cerr); + } catch (CanteraError& err) { + std::cerr << err.what() << std::endl; cerr << "program terminating." << endl; return -1; } diff --git a/test_problems/NASA9poly_test/NASA9poly_test.cpp b/test_problems/NASA9poly_test/NASA9poly_test.cpp index ff9db35dd..aaf07b8e0 100644 --- a/test_problems/NASA9poly_test/NASA9poly_test.cpp +++ b/test_problems/NASA9poly_test/NASA9poly_test.cpp @@ -35,7 +35,7 @@ int main(int argc, char** argv) _set_output_format(_TWO_DIGIT_EXPONENT); #endif try { - + //throw ArraySizeError("MadeUpFunction", 12, 22); IdealGasMix g("gasNASA9.xml", "gri30_mix"); int nsp = g.nSpecies(); @@ -84,8 +84,11 @@ int main(int argc, char** argv) printf(" %13g %13.5g %13.5g\n", T1, visc, cond); } - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); +// cout << err.what() << endl; showErrors(cout); + return 1; } return 0; diff --git a/test_problems/VCSnonideal/NaCl_equil/nacl_equil.cpp b/test_problems/VCSnonideal/NaCl_equil/nacl_equil.cpp index 3b0e6aa77..a0a84e0a4 100644 --- a/test_problems/VCSnonideal/NaCl_equil/nacl_equil.cpp +++ b/test_problems/VCSnonideal/NaCl_equil/nacl_equil.cpp @@ -142,9 +142,9 @@ int main(int argc, char** argv) exit(-1); } numSucc++; - } catch (CanteraError) { + } catch (CanteraError& err) { cout << *mp; - showErrors(cerr); + std::cerr << err.what() << std::endl; cerr << "ERROR: MultiEquil equilibration step failed at " << " T = " << T << " Pres = " << pres @@ -160,8 +160,8 @@ int main(int argc, char** argv) cout << "NUMBER OF FAILURES = " << numFail << endl; return numFail; - } catch (CanteraError) { - showErrors(cerr); + } catch (CanteraError& err) { + std::cerr << err.what() << std::endl; cerr << "ERROR: program terminating due to unforeseen circumstances." << endl; return -1; } diff --git a/test_problems/VPsilane_test/silane_equil.cpp b/test_problems/VPsilane_test/silane_equil.cpp index a0b37acd9..10e4f401e 100644 --- a/test_problems/VPsilane_test/silane_equil.cpp +++ b/test_problems/VPsilane_test/silane_equil.cpp @@ -29,8 +29,8 @@ int main(int argc, char** argv) cout << r; cout << endl; return 0; - } catch (CanteraError) { - showErrors(cerr); + } catch (CanteraError& err) { + std::cerr << err.what() << std::endl; cerr << "program terminating." << endl; return -1; } diff --git a/test_problems/cathermo/DH_graph_1/DH_graph_1.cpp b/test_problems/cathermo/DH_graph_1/DH_graph_1.cpp index 1612e5226..0c873d13c 100644 --- a/test_problems/cathermo/DH_graph_1/DH_graph_1.cpp +++ b/test_problems/cathermo/DH_graph_1/DH_graph_1.cpp @@ -85,8 +85,8 @@ int main(int argc, char** argv) return retn; - } catch (CanteraError) { - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; if (fl) { delete fl; } diff --git a/test_problems/cathermo/HMW_dupl_test/HMW_dupl_test.cpp b/test_problems/cathermo/HMW_dupl_test/HMW_dupl_test.cpp index a7614b03c..659586e9a 100644 --- a/test_problems/cathermo/HMW_dupl_test/HMW_dupl_test.cpp +++ b/test_problems/cathermo/HMW_dupl_test/HMW_dupl_test.cpp @@ -307,9 +307,8 @@ int main(int argc, char** argv) return retn; - } catch (CanteraError) { - printf("caught error\n"); - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; Cantera::appdelete(); return -1; } diff --git a/test_problems/cathermo/HMW_graph_CpvT/HMW_graph_CpvT.cpp b/test_problems/cathermo/HMW_graph_CpvT/HMW_graph_CpvT.cpp index 7d97b2266..ca700159b 100644 --- a/test_problems/cathermo/HMW_graph_CpvT/HMW_graph_CpvT.cpp +++ b/test_problems/cathermo/HMW_graph_CpvT/HMW_graph_CpvT.cpp @@ -283,9 +283,8 @@ int main(int argc, char** argv) #endif return retn; - } catch (CanteraError) { - printf("caught error\n"); - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; Cantera::appdelete(); return -1; } diff --git a/test_problems/cathermo/HMW_graph_GvI/HMW_graph_GvI.cpp b/test_problems/cathermo/HMW_graph_GvI/HMW_graph_GvI.cpp index 9476ce545..7c43adfd2 100644 --- a/test_problems/cathermo/HMW_graph_GvI/HMW_graph_GvI.cpp +++ b/test_problems/cathermo/HMW_graph_GvI/HMW_graph_GvI.cpp @@ -119,9 +119,8 @@ int main(int argc, char** argv) return retn; - } catch (CanteraError) { - - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; return -1; } } diff --git a/test_problems/cathermo/HMW_graph_GvT/HMW_graph_GvT.cpp b/test_problems/cathermo/HMW_graph_GvT/HMW_graph_GvT.cpp index bd7acd709..321403fdf 100644 --- a/test_problems/cathermo/HMW_graph_GvT/HMW_graph_GvT.cpp +++ b/test_problems/cathermo/HMW_graph_GvT/HMW_graph_GvT.cpp @@ -249,9 +249,8 @@ int main(int argc, char** argv) return retn; - } catch (CanteraError) { - - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; Cantera::appdelete(); return -1; } diff --git a/test_problems/cathermo/HMW_graph_HvT/HMW_graph_HvT.cpp b/test_problems/cathermo/HMW_graph_HvT/HMW_graph_HvT.cpp index d3d93b455..f11959387 100644 --- a/test_problems/cathermo/HMW_graph_HvT/HMW_graph_HvT.cpp +++ b/test_problems/cathermo/HMW_graph_HvT/HMW_graph_HvT.cpp @@ -272,9 +272,8 @@ int main(int argc, char** argv) return retn; - } catch (CanteraError) { - printf("caught error\n"); - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; Cantera::appdelete(); return -1; } diff --git a/test_problems/cathermo/HMW_graph_VvT/HMW_graph_VvT.cpp b/test_problems/cathermo/HMW_graph_VvT/HMW_graph_VvT.cpp index 5e8dad06f..e2314433a 100644 --- a/test_problems/cathermo/HMW_graph_VvT/HMW_graph_VvT.cpp +++ b/test_problems/cathermo/HMW_graph_VvT/HMW_graph_VvT.cpp @@ -283,9 +283,8 @@ int main(int argc, char** argv) #endif return retn; - } catch (CanteraError) { - printf("caught error\n"); - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; Cantera::appdelete(); return -1; } diff --git a/test_problems/cathermo/HMW_test_1/HMW_test_1.cpp b/test_problems/cathermo/HMW_test_1/HMW_test_1.cpp index db9011124..35520fc94 100644 --- a/test_problems/cathermo/HMW_test_1/HMW_test_1.cpp +++ b/test_problems/cathermo/HMW_test_1/HMW_test_1.cpp @@ -153,9 +153,8 @@ int main(int argc, char** argv) return retn; - } catch (CanteraError) { - - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; return -1; } } diff --git a/test_problems/cathermo/HMW_test_3/HMW_test_3.cpp b/test_problems/cathermo/HMW_test_3/HMW_test_3.cpp index c6f62af63..f5b592cff 100644 --- a/test_problems/cathermo/HMW_test_3/HMW_test_3.cpp +++ b/test_problems/cathermo/HMW_test_3/HMW_test_3.cpp @@ -146,9 +146,8 @@ int main(int argc, char** argv) return retn; - } catch (CanteraError) { - - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; return -1; } } diff --git a/test_problems/cathermo/VPissp/ISSPTester.cpp b/test_problems/cathermo/VPissp/ISSPTester.cpp index e30eae052..e4ce1dcef 100644 --- a/test_problems/cathermo/VPissp/ISSPTester.cpp +++ b/test_problems/cathermo/VPissp/ISSPTester.cpp @@ -144,8 +144,9 @@ int main(int argc, char** argv) printf(" %15s %12.5g %12.5g %12.5g %12.5g %12.5g\n", sn.c_str(), mui[i], HiPM[i], SiPM[i], CpiPM[i], VoliPM[i]); } - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; + return -1; } return 0; diff --git a/test_problems/cathermo/ims/IMSTester.cpp b/test_problems/cathermo/ims/IMSTester.cpp index 4ea6c1e3e..b4f5c7d9c 100644 --- a/test_problems/cathermo/ims/IMSTester.cpp +++ b/test_problems/cathermo/ims/IMSTester.cpp @@ -142,8 +142,9 @@ int main(int argc, char** argv) printf(" %15s %12.5g %12.5g %12.5g %12.5g %12.5g\n", sn.c_str(), mui[i], HiPM[i], SiPM[i], CpiPM[i], VoliPM[i]); } - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; + return -1; } return 0; diff --git a/test_problems/cathermo/issp/ISSPTester.cpp b/test_problems/cathermo/issp/ISSPTester.cpp index a09ba1129..afae1311a 100644 --- a/test_problems/cathermo/issp/ISSPTester.cpp +++ b/test_problems/cathermo/issp/ISSPTester.cpp @@ -144,8 +144,9 @@ int main(int argc, char** argv) printf(" %15s %12.5g %12.5g %12.5g %12.5g %12.5g\n", sn.c_str(), mui[i], HiPM[i], SiPM[i], CpiPM[i], VoliPM[i]); } - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; + return -1; } return 0; diff --git a/test_problems/cathermo/stoichSubSSTP/stoichSubSSTP.cpp b/test_problems/cathermo/stoichSubSSTP/stoichSubSSTP.cpp index 07e8c0de5..b14df9f6a 100644 --- a/test_problems/cathermo/stoichSubSSTP/stoichSubSSTP.cpp +++ b/test_problems/cathermo/stoichSubSSTP/stoichSubSSTP.cpp @@ -156,9 +156,8 @@ int main(int argc, char** argv) return retn; - } catch (CanteraError) { - - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; Cantera::appdelete(); return -1; } diff --git a/test_problems/cathermo/testWaterPDSS/testWaterPDSS.cpp b/test_problems/cathermo/testWaterPDSS/testWaterPDSS.cpp index d4324ec57..b40adee7e 100644 --- a/test_problems/cathermo/testWaterPDSS/testWaterPDSS.cpp +++ b/test_problems/cathermo/testWaterPDSS/testWaterPDSS.cpp @@ -151,9 +151,8 @@ int main() delete w; - } catch (CanteraError) { - - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; Cantera::appdelete(); return -1; } diff --git a/test_problems/cathermo/testWaterTP/testWaterSSTP.cpp b/test_problems/cathermo/testWaterTP/testWaterSSTP.cpp index 54af996b0..5c012eca7 100644 --- a/test_problems/cathermo/testWaterTP/testWaterSSTP.cpp +++ b/test_problems/cathermo/testWaterTP/testWaterSSTP.cpp @@ -304,7 +304,8 @@ int main() Hset += deltaH; try { w->setState_HP(Hset, OneAtm); - } catch (CanteraError) { + } catch (CanteraError& err) { + err.save(); printf(" %10g, -> Failed to converge, beyond the spinodal probably \n\n", Hset); popError(); break; @@ -324,9 +325,8 @@ int main() printf("Critical Dens = %10.3g kg/m3\n", w->critDensity()); delete w; - } catch (CanteraError) { - - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; Cantera::appdelete(); return -1; } diff --git a/test_problems/cathermo/wtWater/wtWater.cpp b/test_problems/cathermo/wtWater/wtWater.cpp index cce890e84..f7083b62d 100644 --- a/test_problems/cathermo/wtWater/wtWater.cpp +++ b/test_problems/cathermo/wtWater/wtWater.cpp @@ -102,9 +102,8 @@ int main() printf("---------------------------------------------------------------------------------\n"); delete w; - } catch (CanteraError) { - - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; Cantera::appdelete(); return -1; } diff --git a/test_problems/cxx_ex/examples.cpp b/test_problems/cxx_ex/examples.cpp index 8cca3de3c..d078fc0a3 100644 --- a/test_problems/cxx_ex/examples.cpp +++ b/test_problems/cxx_ex/examples.cpp @@ -76,8 +76,8 @@ int main(int argc, char** argv) } return 0; - } catch (CanteraError) { - showErrors(cerr); + } catch (CanteraError& err) { + std::cerr << err.what() << std::endl; cerr << "program terminating." << endl; return -1; } diff --git a/test_problems/cxx_ex/kinetics_example1.cpp b/test_problems/cxx_ex/kinetics_example1.cpp index 4e5cfdcd2..7d3f8e2ed 100644 --- a/test_problems/cxx_ex/kinetics_example1.cpp +++ b/test_problems/cxx_ex/kinetics_example1.cpp @@ -109,8 +109,8 @@ int kinetics_example1(int job) } // handle exceptions thrown by Cantera - catch (CanteraError) { - showErrors(cout); + catch (CanteraError& err) { + std::cout << err.what() << std::endl; cout << " terminating... " << endl; appdelete(); return -1; diff --git a/test_problems/cxx_ex/kinetics_example2.cpp b/test_problems/cxx_ex/kinetics_example2.cpp index 9cc38fc37..af590bfa8 100644 --- a/test_problems/cxx_ex/kinetics_example2.cpp +++ b/test_problems/cxx_ex/kinetics_example2.cpp @@ -100,8 +100,8 @@ int kinetics_example2(int job) } // handle exceptions thrown by Cantera - catch (CanteraError) { - showErrors(std::cout); + catch (CanteraError& err) { + std::cout << err.what() << std::endl; std::cout << " terminating... " << std::endl; appdelete(); return -1; diff --git a/test_problems/cxx_ex/kinetics_example3.cpp b/test_problems/cxx_ex/kinetics_example3.cpp index c8d874017..683606f13 100644 --- a/test_problems/cxx_ex/kinetics_example3.cpp +++ b/test_problems/cxx_ex/kinetics_example3.cpp @@ -108,8 +108,8 @@ int kinetics_example3(int job) } // handle exceptions thrown by Cantera - catch (CanteraError) { - showErrors(cout); + catch (CanteraError& err) { + std::cout << err.what() << std::endl; cout << " terminating... " << endl; appdelete(); return -1; diff --git a/test_problems/cxx_ex/rxnpath_example1.cpp b/test_problems/cxx_ex/rxnpath_example1.cpp index dc4bdf340..51b343470 100644 --- a/test_problems/cxx_ex/rxnpath_example1.cpp +++ b/test_problems/cxx_ex/rxnpath_example1.cpp @@ -150,8 +150,8 @@ int rxnpath_example1(int job) } // handle exceptions thrown by Cantera - catch (CanteraError) { - showErrors(cout); + catch (CanteraError& err) { + std::cout << err.what() << std::endl; cout << " terminating... " << endl; appdelete(); return -1; diff --git a/test_problems/cxx_ex/transport_example1.cpp b/test_problems/cxx_ex/transport_example1.cpp index 51fccb72e..62d4c3a7f 100644 --- a/test_problems/cxx_ex/transport_example1.cpp +++ b/test_problems/cxx_ex/transport_example1.cpp @@ -97,8 +97,8 @@ int transport_example1(int job) } // handle exceptions thrown by Cantera - catch (CanteraError) { - showErrors(cout); + catch (CanteraError& err) { + std::cout << err.what() << std::endl; cout << " terminating... " << endl; appdelete(); return -1; diff --git a/test_problems/cxx_ex/transport_example2.cpp b/test_problems/cxx_ex/transport_example2.cpp index cb16798e7..67910658f 100644 --- a/test_problems/cxx_ex/transport_example2.cpp +++ b/test_problems/cxx_ex/transport_example2.cpp @@ -99,8 +99,8 @@ int transport_example2(int job) } // handle exceptions thrown by Cantera - catch (CanteraError) { - showErrors(cout); + catch (CanteraError& err) { + std::cout << err.what() << std::endl; cout << " terminating... " << endl; appdelete(); return -1; diff --git a/test_problems/diamondSurf/runDiamond.cpp b/test_problems/diamondSurf/runDiamond.cpp index d323f42cc..c92d069bf 100644 --- a/test_problems/diamondSurf/runDiamond.cpp +++ b/test_problems/diamondSurf/runDiamond.cpp @@ -147,8 +147,8 @@ int main(int argc, char** argv) << " " << x[k] << endl; } - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; } return 0; diff --git a/test_problems/diamondSurf_dupl/runDiamondDupl.cpp b/test_problems/diamondSurf_dupl/runDiamondDupl.cpp index 15f736c4c..af14881e3 100644 --- a/test_problems/diamondSurf_dupl/runDiamondDupl.cpp +++ b/test_problems/diamondSurf_dupl/runDiamondDupl.cpp @@ -237,8 +237,9 @@ int main(int argc, char** argv) - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; + return -1; } return 0; diff --git a/test_problems/fracCoeff/fracCoeff.cpp b/test_problems/fracCoeff/fracCoeff.cpp index 68fb2e23e..b09895d61 100644 --- a/test_problems/fracCoeff/fracCoeff.cpp +++ b/test_problems/fracCoeff/fracCoeff.cpp @@ -163,8 +163,9 @@ int main(int argc, char** argv) appdelete(); - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; + return -1; } return 0; diff --git a/test_problems/mixGasTransport/mixGasTransport.cpp b/test_problems/mixGasTransport/mixGasTransport.cpp index 88b2bc51e..62521cc7b 100644 --- a/test_problems/mixGasTransport/mixGasTransport.cpp +++ b/test_problems/mixGasTransport/mixGasTransport.cpp @@ -241,8 +241,9 @@ int main(int argc, char** argv) } - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; + return -1; } return 0; diff --git a/test_problems/multiGasTransport/multiGasTransport.cpp b/test_problems/multiGasTransport/multiGasTransport.cpp index 6de06627a..c8c93f85f 100644 --- a/test_problems/multiGasTransport/multiGasTransport.cpp +++ b/test_problems/multiGasTransport/multiGasTransport.cpp @@ -262,8 +262,9 @@ int main(int argc, char** argv) } - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; + return -1; } return 0; diff --git a/test_problems/negATest/negATest.cpp b/test_problems/negATest/negATest.cpp index 4d4f23533..203dc6b79 100644 --- a/test_problems/negATest/negATest.cpp +++ b/test_problems/negATest/negATest.cpp @@ -91,8 +91,8 @@ int main(int argc, char** argv) return 0; - } catch (CanteraError) { - showErrors(cerr); + } catch (CanteraError& err) { + std::cerr << err.what() << std::endl; cerr << "program terminating." << endl; return -1; } diff --git a/test_problems/pureFluidTest/testPureWater.cpp b/test_problems/pureFluidTest/testPureWater.cpp index 07285ac32..5b9be6662 100644 --- a/test_problems/pureFluidTest/testPureWater.cpp +++ b/test_problems/pureFluidTest/testPureWater.cpp @@ -184,9 +184,8 @@ int main() printf("Critical Dens = %10.3g kg/m3\n", w->critDensity()); delete w; - } catch (CanteraError) { - - showErrors(); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; Cantera::appdelete(); return -1; } diff --git a/test_problems/rankine_democxx/rankine.cpp b/test_problems/rankine_democxx/rankine.cpp index 793780d0a..77bdfebf6 100644 --- a/test_problems/rankine_democxx/rankine.cpp +++ b/test_problems/rankine_democxx/rankine.cpp @@ -86,8 +86,8 @@ int main() #endif try { return openRankine(0, 0); - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; return -1; } } diff --git a/test_problems/silane_equil/silane_equil.cpp b/test_problems/silane_equil/silane_equil.cpp index de7aa490b..c5ddd4995 100644 --- a/test_problems/silane_equil/silane_equil.cpp +++ b/test_problems/silane_equil/silane_equil.cpp @@ -20,8 +20,8 @@ int main(int argc, char** argv) equilibrate(g, "TP"); cout << g; return 0; - } catch (CanteraError) { - showErrors(cerr); + } catch (CanteraError& err) { + std::cerr << err.what() << std::endl; cerr << "program terminating." << endl; return -1; } diff --git a/test_problems/surfSolverTest/surfaceSolver.cpp b/test_problems/surfSolverTest/surfaceSolver.cpp index c9cbc7111..35b3bee32 100644 --- a/test_problems/surfSolverTest/surfaceSolver.cpp +++ b/test_problems/surfSolverTest/surfaceSolver.cpp @@ -450,8 +450,8 @@ int main(int argc, char** argv) surfPhaseTP = 0; delete xc; appdelete(); - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; } return 0; diff --git a/test_problems/surfSolverTest/surfaceSolver2.cpp b/test_problems/surfSolverTest/surfaceSolver2.cpp index 9d8ed1236..82f6c39cf 100644 --- a/test_problems/surfSolverTest/surfaceSolver2.cpp +++ b/test_problems/surfSolverTest/surfaceSolver2.cpp @@ -487,8 +487,8 @@ int main(int argc, char** argv) surfPhaseTP2 = 0; delete xc; appdelete(); - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; } return 0; diff --git a/test_problems/surfkin/surfdemo.cpp b/test_problems/surfkin/surfdemo.cpp index c40a01dda..1de7bc8a8 100644 --- a/test_problems/surfkin/surfdemo.cpp +++ b/test_problems/surfkin/surfdemo.cpp @@ -36,8 +36,8 @@ int main() cout << surf.speciesName(k) << " " << wdot[k+gas.nSpecies()] << endl; - } catch (CanteraError) { - showErrors(cout); + } catch (CanteraError& err) { + std::cout << err.what() << std::endl; } return 0; }