捕获参数错误异常

// 捕获参数错误异常
// VC 2008
// 编译选项:
//   启用C++异常: /EHa

#include "stdafx.h"
#include "assert.h"
#include <excpt.h>
#include <crtdbg.h>
#include <Dbghelp.h>
#pragma comment(lib, "Dbghelp.lib")

void new_invalid_parameter_handler(
      const wchar_t * expression,
      const wchar_t * function,
      const wchar_t * file,
      unsigned int line,
      uintptr_t pReserved
      )
{
 printf("错误发生/n");
 throw 1;
}

int _tmain(int argc, _TCHAR* argv[])
{
 // 设置参数错误处理函数
  _invalid_parameter_handler old = _set_invalid_parameter_handler(new_invalid_parameter_handler);

  // 禁止_DEBUG时候调试器捕获错误弹出对话框
  // 如果没有这句, 会出现对话框, 选择 "忽略" 可以继续运行
  _CrtSetReportMode(_CRT_ASSERT, 0);


 char ch1[20];
 char ch2[20];
 memset(ch1, 'A', sizeof(ch1));
 memset(ch2, 'B', sizeof(ch2));

 // 出错
 try
 {
  int iLen = sprintf_s(ch1, sizeof(ch1), ch2);
  printf("字符串长度: %d./n", iLen);
 }
 catch (int& iE)
 {
  printf("捕获异常 iE = %d./n", iE);
 }

 printf("程序结束./n");

 _invalid_parameter_handler my = _set_invalid_parameter_handler(old);
 return 0;
}

// 运行输出:
// 错误发生
// 捕获异常 iE = 1.
// 程序结束.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值