- cerr<<" backtrace:\n";
- const list<Debug::Backtrace::StackFrame> &frames = exc->get_backtrace().get_frames();
- for(list<Debug::Backtrace::StackFrame>::const_iterator i=frames.begin(); i!=frames.end(); ++i)
- cerr<<" "<<*i<<'\n';
+ IO::print(IO::cerr, "An uncaught exception occurred.\n");
+ IO::print(IO::cerr, " type: %s\n", Debug::demangle(typeid(e).name()));
+ vector<string> lines = split(e.what(), '\n');
+ if(lines.size()<2)
+ IO::print(IO::cerr, " what(): %s\n", e.what());
+ else
+ {
+ IO::print(IO::cerr, " what(): %s\n", lines.front());
+ for(vector<string>::const_iterator i=lines.begin(); ++i!=lines.end(); )
+ IO::print(IO::cerr, " %s\n", *i);
+ }