diff options
-rw-r--r-- | src/DabMux.cpp | 4 | ||||
-rw-r--r-- | src/fig/FIGCarousel.cpp | 10 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/DabMux.cpp b/src/DabMux.cpp index c0f5ad0..3185fb3 100644 --- a/src/DabMux.cpp +++ b/src/DabMux.cpp @@ -529,6 +529,10 @@ int main(int argc, char *argv[]) etiLog.level(error) << "Caught out of range exception : " << except.what(); returnCode = 1; } + catch (const std::logic_error& except) { + etiLog.level(error) << "Caught logic error : " << except.what(); + returnCode = 2; + } catch (const std::runtime_error& except) { etiLog.level(error) << "Caught runtime error : " << except.what(); returnCode = 2; diff --git a/src/fig/FIGCarousel.cpp b/src/fig/FIGCarousel.cpp index e32ea39..bfd87c8 100644 --- a/src/fig/FIGCarousel.cpp +++ b/src/fig/FIGCarousel.cpp @@ -290,7 +290,15 @@ size_t FIGCarousel::carousel( ss << "Assertion error: FIG" << fig_el->fig->figtype() << "/" << fig_el->fig->figextension() << " did not write enough data: (" << written << ")"; - throw std::runtime_error(ss.str()); + throw std::logic_error(ss.str()); + } + else if (written > available_size) { + std::stringstream ss; + ss << "Assertion error: FIG" << fig_el->fig->figtype() << "/" << + fig_el->fig->figextension() << + " wrote " << written << " bytes, but only " << + available_size << " available!"; + throw std::logic_error(ss.str()); } if (written > 2) { |