为了账号安全,请及时绑定邮箱和手机立即绑定

捕获访问冲突异常?

捕获访问冲突异常?

C++
SMILET 2019-08-16 14:27:14
捕获访问冲突异常?例int *ptr;*ptr = 1000;我可以使用标准C ++捕获内存访问冲突异常,而无需使用任何特定的Microsoft。
查看完整描述

3 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞


不。当你做坏事时,C ++不会抛出异常,这会导致性能损失。违反访问或零错误的事情更像是“机器”异常,而不是您可以捕获的语言级别的东西。


查看完整回答
反对 回复 2019-08-16
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

读它并哭泣!

我想到了。如果你不从处理程序中抛出,处理程序将继续,异常也将继续。

当你抛出自己的异常并处理它时,魔法就会发生。

#include "stdafx.h"#include <stdio.h>#include <stdlib.h>#include <signal.h>#include <tchar.h>void SignalHandler(int signal){
    printf("Signal %d",signal);
    throw "!Access Violation!";}int main(){
    typedef void (*SignalHandlerPointer)(int);

    SignalHandlerPointer previousHandler;
    previousHandler = signal(SIGSEGV , SignalHandler);
    try{
        *(int *) 0 = 0;// Baaaaaaad thing that should never be caught. You should write good code in the first place.
    }
    catch(char *e)
    {
        printf("Exception Caught: %s\n",e);
    }
    printf("Now we continue, unhindered, like the abomination never happened. (I am an EVIL genius)\n");
    printf("But please kids, DONT TRY THIS AT HOME ;)\n");}


查看完整回答
反对 回复 2019-08-16
  • 3 回答
  • 0 关注
  • 674 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信