捕获访问冲突异常?

捕获访问冲突异常?

int *ptr;*ptr = 1000;

我可以使用标准C ++捕获内存访问冲突异常,而无需使用任何特定的Microsoft。


SMILET
浏览 675回答 3
3回答

凤凰求蛊

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

猛跑小猪

读它并哭泣!我想到了。如果你不从处理程序中抛出,处理程序将继续,异常也将继续。当你抛出自己的异常并处理它时,魔法就会发生。#include&nbsp;"stdafx.h"#include&nbsp;<stdio.h>#include&nbsp;<stdlib.h>#include&nbsp;<signal.h>#include&nbsp;<tchar.h>void&nbsp;SignalHandler(int&nbsp;signal){ &nbsp;&nbsp;&nbsp;&nbsp;printf("Signal&nbsp;%d",signal); &nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;"!Access&nbsp;Violation!";}int&nbsp;main(){ &nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;void&nbsp;(*SignalHandlerPointer)(int); &nbsp;&nbsp;&nbsp;&nbsp;SignalHandlerPointer&nbsp;previousHandler; &nbsp;&nbsp;&nbsp;&nbsp;previousHandler&nbsp;=&nbsp;signal(SIGSEGV&nbsp;,&nbsp;SignalHandler); &nbsp;&nbsp;&nbsp;&nbsp;try{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(int&nbsp;*)&nbsp;0&nbsp;=&nbsp;0;//&nbsp;Baaaaaaad&nbsp;thing&nbsp;that&nbsp;should&nbsp;never&nbsp;be&nbsp;caught.&nbsp;You&nbsp;should&nbsp;write&nbsp;good&nbsp;code&nbsp;in&nbsp;the&nbsp;first&nbsp;place. &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;catch(char&nbsp;*e) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Exception&nbsp;Caught:&nbsp;%s\n",e); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;printf("Now&nbsp;we&nbsp;continue,&nbsp;unhindered,&nbsp;like&nbsp;the&nbsp;abomination&nbsp;never&nbsp;happened.&nbsp;(I&nbsp;am&nbsp;an&nbsp;EVIL&nbsp;genius)\n"); &nbsp;&nbsp;&nbsp;&nbsp;printf("But&nbsp;please&nbsp;kids,&nbsp;DONT&nbsp;TRY&nbsp;THIS&nbsp;AT&nbsp;HOME&nbsp;;)\n");}
打开App,查看更多内容
随时随地看视频慕课网APP