diff options
-rw-r--r-- | solc/CommandLineInterface.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/solc/CommandLineInterface.cpp b/solc/CommandLineInterface.cpp index 63d41cdf..0f2e83dc 100644 --- a/solc/CommandLineInterface.cpp +++ b/solc/CommandLineInterface.cpp @@ -985,13 +985,26 @@ bool CommandLineInterface::assemble() map<string, shared_ptr<Scanner>> scanners; for (auto const& src: m_sourceCodes) { - auto scanner = make_shared<Scanner>(CharStream(src.second), src.first); - scanners[src.first] = scanner; - if (!m_assemblyStacks[src.first].parse(scanner)) - successful = false; - else - //@TODO we should not just throw away the result here - m_assemblyStacks[src.first].assemble(); + try + { + auto scanner = make_shared<Scanner>(CharStream(src.second), src.first); + scanners[src.first] = scanner; + if (!m_assemblyStacks[src.first].parse(scanner)) + successful = false; + else + //@TODO we should not just throw away the result here + m_assemblyStacks[src.first].assemble(); + } + catch (Exception const& _exception) + { + cerr << "Exception in assembler: " << boost::diagnostic_information(_exception) << endl; + return false; + } + catch (...) + { + cerr << "Unknown exception in assembler." << endl; + return false; + } } for (auto const& stack: m_assemblyStacks) { |