diff --git a/solc/CommandLineInterface.cpp b/solc/CommandLineInterface.cpp index 63d41cdfa..0f2e83dce 100644 --- a/solc/CommandLineInterface.cpp +++ b/solc/CommandLineInterface.cpp @@ -985,13 +985,26 @@ bool CommandLineInterface::assemble() map> scanners; for (auto const& src: m_sourceCodes) { - auto scanner = make_shared(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(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) {