Click here to Skip to main content
15,914,070 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: Worker thread + memory leak.. Pin
Joaquín M López Muñoz27-Jan-03 8:05
Joaquín M López Muñoz27-Jan-03 8:05 
GeneralRe: Worker thread + memory leak.. Pin
RobJones27-Jan-03 9:38
RobJones27-Jan-03 9:38 
GeneralRe: Worker thread + memory leak.. Pin
Joaquín M López Muñoz27-Jan-03 9:44
Joaquín M López Muñoz27-Jan-03 9:44 
Generalerror C2712: Cannot use __try in functions that require object unwinding Pin
Joan M27-Jan-03 6:30
professionalJoan M27-Jan-03 6:30 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Chris Meech27-Jan-03 7:43
Chris Meech27-Jan-03 7:43 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Joan M27-Jan-03 8:32
professionalJoan M27-Jan-03 8:32 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Mike Nordell27-Jan-03 9:20
Mike Nordell27-Jan-03 9:20 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Joaquín M López Muñoz27-Jan-03 9:16
Joaquín M López Muñoz27-Jan-03 9:16 
You can handle regular C++ exceptions and SEH all in one with a little code like this:
class SEH_exception:public std::runtime_error
{
public:
  SEH_exception(unsigned int code,const char* msg):std::runtime_error(msg),code_(code){}
  unsigned int code()const{return code_;}
private:
  unsigned int code_;
};
 
static void SEH_translator(unsigned int code,EXCEPTION_POINTERS*)
{
  std::string msg;
  switch(code){
    case EXCEPTION_ACCESS_VIOLATION: msg="access violation";break;
    case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: msg="array bounds exceeded";break;
    case EXCEPTION_BREAKPOINT: msg="breakpoint exception";break;
    case EXCEPTION_DATATYPE_MISALIGNMENT: msg="datatype misalignment";break;
    case EXCEPTION_FLT_DENORMAL_OPERAND: msg="flt denormal operand";break;
    case EXCEPTION_FLT_DIVIDE_BY_ZERO: msg="flt divide by zero";break;
    case EXCEPTION_FLT_INEXACT_RESULT: msg="flt inexact result";break;
    case EXCEPTION_FLT_INVALID_OPERATION: msg="flt invalid operation";break;
    case EXCEPTION_FLT_OVERFLOW: msg="flt overflow";break;
    case EXCEPTION_FLT_STACK_CHECK: msg="flt stack check";break;
    case EXCEPTION_FLT_UNDERFLOW: msg="flt underflow";break;
    case EXCEPTION_ILLEGAL_INSTRUCTION: msg="illegal instruction";
    case EXCEPTION_IN_PAGE_ERROR: msg="in page error";break;
    case EXCEPTION_INT_DIVIDE_BY_ZERO: msg="divide by zero";break;
    case EXCEPTION_INT_OVERFLOW: msg="overflow"; break;
    case EXCEPTION_INVALID_DISPOSITION: msg="invalid disposition";break;
    case EXCEPTION_NONCONTINUABLE_EXCEPTION: msg="noncontinuable exception";break;
    case EXCEPTION_PRIV_INSTRUCTION: msg="priv instruction";break;
    case EXCEPTION_SINGLE_STEP: msg="single step trap";break;
    case EXCEPTION_STACK_OVERFLOW: msg="stack overflow";break;
    default:{
      char buf[1024];
      sprintf(buf,"SEH exception (%x)",code);
      msg=buf;
    }
    break;
  }
  throw SEH_exception(code,msg.c_str());
}
 
// somewhere at the beginning of the thread
_set_se_translator(SEH_translator);
Now use C++ good old try and catch (no leading underscores). Good luck.

Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Joan M28-Jan-03 21:12
professionalJoan M28-Jan-03 21:12 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Joaquín M López Muñoz28-Jan-03 21:32
Joaquín M López Muñoz28-Jan-03 21:32 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Joan M28-Jan-03 21:37
professionalJoan M28-Jan-03 21:37 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Joan M28-Jan-03 22:33
professionalJoan M28-Jan-03 22:33 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Joaquín M López Muñoz29-Jan-03 0:09
Joaquín M López Muñoz29-Jan-03 0:09 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Joan M29-Jan-03 0:30
professionalJoan M29-Jan-03 0:30 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Joaquín M López Muñoz29-Jan-03 0:32
Joaquín M López Muñoz29-Jan-03 0:32 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Joan M29-Jan-03 0:57
professionalJoan M29-Jan-03 0:57 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Joaquín M López Muñoz29-Jan-03 2:38
Joaquín M López Muñoz29-Jan-03 2:38 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Joan M29-Jan-03 3:44
professionalJoan M29-Jan-03 3:44 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Joan M29-Jan-03 4:23
professionalJoan M29-Jan-03 4:23 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
PJ Arends27-Jan-03 9:18
professionalPJ Arends27-Jan-03 9:18 
GeneralRe: error C2712: Cannot use __try in functions that require object unwinding Pin
Joan M28-Jan-03 21:16
professionalJoan M28-Jan-03 21:16 
GeneralGetDlgItem and CFormView Pin
ElizabethC27-Jan-03 6:04
ElizabethC27-Jan-03 6:04 
GeneralRe: GetDlgItem and CFormView Pin
PJ Arends27-Jan-03 6:59
professionalPJ Arends27-Jan-03 6:59 
GeneralRe: GetDlgItem and CFormView Pin
Bill Gates Antimatter Particle27-Jan-03 7:02
Bill Gates Antimatter Particle27-Jan-03 7:02 
GeneralRe: GetDlgItem and CFormView Pin
ElizabethC27-Jan-03 7:05
ElizabethC27-Jan-03 7:05 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.