(原)异常处理,调试辅助

#define THROWEXCEPTION(STREXCEPTION) { /
 TCHAR sz[256] = {0} ;/
 wsprintf(sz,"%s/n/n%s/n%u 行/nLastError : %u/n",/
  STREXCEPTION,__FILE__,__LINE__,::GetLastError());/
  throw YDebug::YException(sz); }

#define DEBUGMSG(STRDEBUG) { /
 TCHAR sz[256] = {0} ;/
 wsprintf(sz,"%s/n/n%s/n%u 行/nLastError : %u/n",/
 STRDEBUG,__FILE__,__LINE__,::GetLastError());/
 YDebug::DebugMsgBox(sz); 

////////////////////////////////////////

try
  {
   if (GetApp() == NULL)
    THROWEXCEPTION(_T("YWnd::CreateEx 1 ")); 

  }

  catch (YDebug::YException &e) { e.MessageBox();  }
  catch (...) {  DEBUGMSG(_T("CreateEx 1 未知错误")) }

////////////////////////////////////////

.h

namespace YDebug
{
 /*******************************************************
 模块名:  Exception
 模块描述:
 做成者: 
tsys2000@gmail.com
 做成时间: 2005/11/
 *******************************************************/

 class YException
 {
 public:
  YException (LPCTSTR msg) : m_msg(msg) {} 
  LPCTSTR GetMessage() const {return m_msg;}
  void MessageBox();
 private:
  LPCTSTR m_msg;
 };

 template <typename Type>
  void YsDebugHelper(LPCTSTR str,Type i)
 {
  stringstream ss;
  ss<<"ysay : "<<str<<"  $  "<< i << "  $"<<endl;
  OutputDebugString(ss.str().c_str()); 
 }

 void YsDebugHelper(LPCTSTR str);

 void DebugMsgBox(LPCTSTR str);

 void MsgBox(LPCTSTR str);

}

#ifdef _YSDEBUG
#define YSTRACE(TYPE,Str,Data) YDebug::YsDebugHelper<TYPE>(Str,Data)
#else
#define YSTRACE(TYPE,Str,Data)
#endif //

#ifdef _YSDEBUG
#define YSTRACE2(Str)   YDebug::YsDebugHelper(Str)
#else
#define YSTRACE2(Str)
#endif //

.cpp

namespace YDebug
{

 void YException::MessageBox()
 {
#ifdef _YSDEBUG
  ::MessageBox (0, GetMessage (),"YSay", MB_OK);
#else
  long t;
  time(&t);
  tm *_t = localtime(&t);
  stringstream str;
  str<<_t->tm_year<<"_"<<_t->tm_mon<<"_"<<_t->tm_mday<<".txt";  
  ofstream ss(str.str().c_str(),ios::app); 
  ss<<"-------------------------------"<<"/n";
  ss<<GetMessage ()<<endl;  
#endif
 } 

 void YsDebugHelper(LPCTSTR str)
 {
  TCHAR buf [250];
  ::wsprintf ((LPTSTR)buf, _T("YSay : %s/n"), str );
  OutputDebugString(str); 
 }

 void DebugMsgBox(LPCTSTR str)
 {
#if _DEBUG
  ::MessageBox (0, (LPTSTR)str, _T("YS MsgBox"),  MB_OK);
#endif
 }
 void MsgBox(LPCTSTR str)
 {
  ::MessageBox (0, (LPTSTR)str, _T("YS MsgBox"),  MB_OK);
 }

}

转载请注明 tsys2000@gmail.com 

阅读更多
上一篇(原)保存ini文件,注册表
下一篇云和山的彼端
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭