c++ - Writing SEH translator -


class seh_exception : public std::exception { public:        seh_exception(uint se_code, pexception_pointers se_info);     seh_exception(const seh_exception& old);     ~seh_exception();      const char *what() const; };  void translate_seh_exception(uint se_code, pexception_pointers se_info) {     throw seh_exception(se_code, se_info); } 

now, do in constructor? couldn't find information on how long *se_info exist, means shouldn't save se_info in private field later use — should copy it. or maybe not?

and what's what()? supposed conjure underlying string on-demand? again, allocating memory in constructor seems not idea in case.

i've implemented storing se_code , se_info without deep-copying, , generating formatted message in constructor, , works, though not know if supposed work.

i intend use in "catch, log happened, terminate" scenario.

you don't need own class achieve this, can throw pexception_pointers. se_code available @ se_info->exceptionrecord->exceptioncode.

so simplest handler just;

void translate_seh_exception(uint se_code, pexception_pointers se_info) {     throw se_info; } 

you can catch(pexception_pointers se_info)

the exception_pointers guaranteed exist duration of catch block, how long need for. per documentation, translator function called once each catch block, is, has re-translate seh exception every function containing try/catch block.


Comments

Popular posts from this blog

python - Subclassed QStyledItemDelegate ignores Stylesheet -

java - HttpClient 3.1 Connection pooling vs HttpClient 4.3.2 -

SQL: Divide the sum of values in one table with the count of rows in another -