值得借鉴的 异常捕获体系 (二)

原创 2012年03月30日 14:23:55

#include "stdafx.h"

//--------------------------------------------------------------------------------
//
// Filename   : Assert.cpp
//
//--------------------------------------------------------------------------------

// include files
#include "stdafx.h"
#include "Assertx.h"
#include "Type.h"
#include <time.h>
#ifdef __LINUX__
#include <execinfo.h>
#endif

int g_Command_Assert=0 ;//控制参数,0:会通过弹出对话框让用户选择(缺省值)
      //   1:忽略
      //   2:继续抛出异常用于获取运行堆栈
int g_Command_IgnoreMessageBox=FALSE ;//控制参数,跳过MyMessageBox的中断

 

 

VOID __show__( const CHAR* szTemp )
{

#ifdef __LINUX__
 printf("Assert:%s",szTemp);
#endif

 //保存日志
#ifndef GAME_CLIENT
 FILE* f = fopen( "./Log/assert.log", "a" ) ;
 fwrite( szTemp, 1, strlen(szTemp), f ) ;
 fwrite( "\r\n", 1, 2, f ) ;
 fclose(f) ;
#endif

#if defined(__WINDOWS__)
 static MyLock lock ;
 if( g_Command_Assert!=1 )
 {
  lock.Lock() ;
  INT iRet = ::MessageBoxA( NULL, szTemp, "异常", MB_OK ) ;
  lock.Unlock() ;
 }
#elif defined(__LINUX__)
 
#endif

#ifdef GAME_CLIENT
 throw(std::string(szTemp));
#else
 throw(1);
#endif
}

VOID __messagebox__(const CHAR*msg )
{
 if( g_Command_IgnoreMessageBox )
  return ;
#if defined(__WINDOWS__)
 ::MessageBoxA( NULL, msg, "信息", MB_OK ) ;
#elif defined(__LINUX__)
#endif
}
//--------------------------------------------------------------------------------
//
// __assert__
//
//
//--------------------------------------------------------------------------------
VOID __assert__ ( const CHAR * file , UINT line , const CHAR * func , const CHAR * expr )
{
 CHAR szTemp[1024] = {0};
 
#ifdef __LINUX__ //换个格式
 sprintf( szTemp, "[%s][%d][%s][%s]\n", file, line, func, expr ) ;
#else
 sprintf( szTemp, "[%s][%d][%s][%s]", file, line, func, expr ) ;
#endif
 __show__(szTemp) ;
}

VOID __assertex__ ( const CHAR * file , UINT line , const CHAR * func , const CHAR * expr ,const CHAR* msg)
{
 CHAR szTemp[1024] = {0};
 
#ifdef __LINUX__
 sprintf( szTemp, "[%s][%d][%s][%s]\n[%s]\n", file, line, func, expr ,msg ) ;
#else
 sprintf( szTemp, "[%s][%d][%s][%s]\n[%s]", file, line, func, expr ,msg ) ;
#endif
 __show__(szTemp) ;
}

VOID __assertspecial__ ( const CHAR * file , UINT line , const CHAR * func , const CHAR * expr ,const CHAR* msg)
{
 CHAR szTemp[1024] = {0};
 
#ifdef __LINUX__
 sprintf( szTemp, "S[%s][%d][%s][%s]\n[%s]\n", file, line, func, expr ,msg ) ;
#else
 sprintf( szTemp, "S[%s][%d][%s][%s]\n[%s]", file, line, func, expr ,msg ) ;
#endif
 __show__(szTemp) ;
}
//--------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------
VOID __protocol_assert__ ( const CHAR * file , UINT line , const CHAR * func , const CHAR * expr )
{
 printf( "[%s][%d][%s][%s]", file, line, func, expr ) ;
}

抛出异常和捕获异常的区别

抛出异常:如果程序中出现了异常,没有办法将具体的异常打印出来,不做任何处理   捕获异常:如果程序出现了异常,就能够详细的打印是什么原因导致了异常并且能够做出相应的处理,能够显示详细的Log   如果...
  • hbiao68
  • hbiao68
  • 2013年12月04日 10:14
  • 3833

Spring 异常捕获+log4j日志

参考
  • qq_17612199
  • qq_17612199
  • 2016年05月20日 08:56
  • 1709

Android全局异常捕获机制

安卓异常整体解决方案,从异常捕获、到异常日志写入、到异常上报等。。
  • XiNanHeiShao
  • XiNanHeiShao
  • 2017年06月15日 21:26
  • 1832

java异常体系以及异常的捕获和处理和图解详解

java 异常是程序运行过程中出现的错误。Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。在Java API中定义了许多异常类,分为两大类,错误...
  • dianzijinglin
  • dianzijinglin
  • 2016年08月18日 15:55
  • 762

java异常体系理解

  • 2014年04月29日 17:39
  • 25KB
  • 下载

异常体系结构

  • 2013年05月23日 21:59
  • 49KB
  • 下载

第7章 ARM异常中断处理及编程《从实践中学ARM体系结构与接口技术》

  • 2013年07月08日 11:02
  • 931KB
  • 下载

java异常体系

转自 http://blog.csdn.net/junlixxu/article/details/6096266 一、 异常的概念和Java异常体系结构     异常是程序运行过程中出现的错误...
  • kevin_love_it
  • kevin_love_it
  • 2018年01月01日 17:39
  • 18

java的异常体系和File类

1、异常 java异常是java程序运行过程中出现的非正常情况异常在程序中如果不能做处理,会导致程序中途瘫痪,不能正常完成特定功能异常一般情况是需要通过java异常 出来机制给屏蔽或者处理掉...
  • Big_treeor
  • Big_treeor
  • 2016年11月20日 10:55
  • 137

java中从Spring、Hibernate和Struts框架的action、service和dao三层结构异常处理体系设计

java中从Spring、Hibernate和Struts框架的action、service和dao三层结构异常处理体系设计   Spring的事务实现采用基于AOP的拦截器来实...
  • mwyking
  • mwyking
  • 2016年05月24日 17:20
  • 472
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:值得借鉴的 异常捕获体系 (二)
举报原因:
原因补充:

(最多只允许输入30个字)