捕獲訪問沖突異常?例int *ptr;*ptr = 1000;我可以使用標(biāo)準(zhǔn)C ++捕獲內(nèi)存訪問沖突異常,而無需使用任何特定的Microsoft。
3 回答

鳳凰求蠱
TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
不。當(dāng)你做壞事時(shí),C ++不會(huì)拋出異常,這會(huì)導(dǎo)致性能損失。違反訪問或零錯(cuò)誤的事情更像是“機(jī)器”異常,而不是您可以捕獲的語言級(jí)別的東西。

猛跑小豬
TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
讀它并哭泣!
我想到了。如果你不從處理程序中拋出,處理程序?qū)⒗^續(xù),異常也將繼續(xù)。
當(dāng)你拋出自己的異常并處理它時(shí),魔法就會(huì)發(fā)生。
#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");}
- 3 回答
- 0 關(guān)注
- 705 瀏覽
添加回答
舉報(bào)
0/150
提交
取消