From f61c3232449d36cc44bcff70240f5292bf8f9f16 Mon Sep 17 00:00:00 2001 From: Christoph Jentzsch Date: Thu, 2 Oct 2014 14:20:33 +0200 Subject: [PATCH] Restructured exceptions. Boost::exception is now used primarily. --- Assembly.cpp | 2 +- Assembly.h | 2 +- CodeFragment.h | 2 +- Compiler.cpp | 7 +++++-- Parser.cpp | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Assembly.cpp b/Assembly.cpp index 2250a71fe..9b6dee947 100644 --- a/Assembly.cpp +++ b/Assembly.cpp @@ -102,7 +102,7 @@ void Assembly::append(Assembly const& _a) void Assembly::append(Assembly const& _a, int _deposit) { if (_deposit > _a.m_deposit) - throw InvalidDeposit(); + BOOST_THROW_EXCEPTION(InvalidDeposit()); else { append(_a); diff --git a/Assembly.h b/Assembly.h index b8152fe02..b7feaf4f4 100644 --- a/Assembly.h +++ b/Assembly.h @@ -111,7 +111,7 @@ public: std::ostream& streamOut(std::ostream& _out, std::string const& _prefix = "") const; private: - void donePath() { if (m_totalDeposit != INT_MAX && m_totalDeposit != m_deposit) throw InvalidDeposit(); } + void donePath() { if (m_totalDeposit != INT_MAX && m_totalDeposit != m_deposit) BOOST_THROW_EXCEPTION(InvalidDeposit()); } unsigned bytesRequired() const; unsigned m_usedTags = 0; diff --git a/CodeFragment.h b/CodeFragment.h index 60ab7c6de..d6ca86bbe 100644 --- a/CodeFragment.h +++ b/CodeFragment.h @@ -50,7 +50,7 @@ public: private: void finalise(CompilerState const& _cs); - template void error() const { throw T(); } + template void error() const { BOOST_THROW_EXCEPTION(T() ); } void constructOperation(sp::utree const& _t, CompilerState& _s); bool m_finalised = false; diff --git a/Compiler.cpp b/Compiler.cpp index 389c10be2..37fb3c340 100644 --- a/Compiler.cpp +++ b/Compiler.cpp @@ -43,7 +43,10 @@ bytes dev::eth::compileLLL(string const& _src, bool _opt, vector* _error catch (Exception const& _e) { if (_errors) - _errors->push_back(_e.description()); + { + _errors->push_back("Parse error."); + _errors->push_back(diagnostic_information(_e)); + } } catch (std::exception) { @@ -67,7 +70,7 @@ std::string dev::eth::compileLLLToAsm(std::string const& _src, bool _opt, std::v catch (Exception const& _e) { if (_errors) - _errors->push_back(_e.description()); + _errors->push_back(diagnostic_information(_e)); } catch (std::exception) { diff --git a/Parser.cpp b/Parser.cpp index 52a05174b..e94e88e19 100644 --- a/Parser.cpp +++ b/Parser.cpp @@ -140,6 +140,6 @@ void dev::eth::parseTreeLLL(string const& _s, sp::utree& o_out) qi::phrase_parse(ret, s.cend(), element, space, qi::skip_flag::dont_postskip, o_out); for (auto i = ret; i != s.cend(); ++i) if (!isspace(*i)) - throw std::exception(); + BOOST_THROW_EXCEPTION(std::exception()); }