结构化异常处里(SEH)与C++标准异常处理

 对于SHE的概念性的知道就不再提及了啊,对于一般的程序员可能都遇到过这样的情况,就是VS下编程,会发现try-catch不是万能的.很多的异常捕获不到.这也就是今天要提到的结构化异常了啊,这是Windows操作系统的一种系统机制.下面提供简单的转换办法:

首选可以创建一个CSEHException类

 

class CSEHException
{
public:
 CSEHException()
 {
  OldFunc = NULL;
  initialize_seh_trans_to_ce();//
 }
 ~CSEHException()
 {
  if (OldFunc != NULL)
  {
   _set_se_translator(OldFunc);
  }
 }

 static void trans_func(unsigned int u, EXCEPTION_POINTERS *pExp)
 {
  throw *pExp;
 }
 void initialize_seh_trans_to_ce()
 {
  OldFunc = _set_se_translator(trans_func); //设置一个对所有的Windows系统异常产生作用的回调处理函数
 }
private:
 _se_translator_function OldFunc;
};

 

CSEHException seh; //定一个全局的

 

 

这样就可以try-catch到Windows系统异常了啊.......就这么方便简单....
 

你可能感兴趣的:(C++,windows,exception,function,Class,Pointers)