rem: catch(DBC_EXCEPTION* e) { e->print(); exit(1); }
context: int main(int argc, char *argv[]){  ECA_SESSION* ecaparams = 0;  attach_debug_object(&textdebug);    ecadebug->set_debug_level(ECA_DEBUG::info |			    ECA_DEBUG::module_flow);  struct sigaction es_handler;  es_handler.sa_handler = signal_handler;  sigemptyset(&es_handler.sa_mask);  es_handler.sa_flags = 0;  sigaction(SIGTERM, &es_handler, 0);  sigaction(SIGINT, &es_handler, 0);  sigaction(SIGQUIT, &es_handler, 0);  sigaction(SIGABRT, &es_handler, 0);  try {    COMMAND_LINE cline = COMMAND_LINE (argc, argv);    parse_command_line(cline);    if (cline.has("-o:stdout") ||	cline.has("stdout") || 	cline.has("-d:0") || 	cline.has('q'))      ecadebug->disable();    else      print_header();    ecaparams = new ECA_SESSION(cline);    global_pointer_to_ecaparams = ecaparams;  // used only for signal handling!     if (ecaparams->is_interactive()) start_iactive_readline(ecaparams);    else {      if (ecaparams->is_selected_chainsetup_connected() == true) {	ECA_PROCESSOR epros (ecaparams);	epros.exec();      }    }  }  catch(ECA_ERROR* e) {    cerr << "---\nERROR: [" << e->error_section() << "] : \"" << e->error_msg() << "\"\n\n";  }  catch(...) {    cerr << "---\nCaught an unknown exception!\n";  }  try {    if (global_session_deleted == false) {      global_session_deleted = true;      if (ecaparams != 0) delete ecaparams;    }  }  catch(ECA_ERROR* e) {    cerr << "---\nERROR: [" << e->error_section() << "] : \"" << e->error_msg() << "\"\n\n";  }  catch(DBC_EXCEPTION* e) {     e->print();    exit(1);  }  catch(...) {    cerr << "---\nCaught an unknown exception!\n";  }  //  ecaparams->~ECA_SESSION();  ecadebug->flush();      return(0); // everything ok!}