亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關鍵是第一個,如何捕獲?

關鍵是第一個,如何捕獲?

慕森王 2023-01-11 19:15:06
SDK的程序在WINMAIN返回之前寫段代碼,來捕獲程序異常退出的原因,并寫入TXT文件里,這樣的代碼該怎么寫?
查看完整描述

2 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

程序運行過程中產生的異常一般是由程序自身處理

程序自身不處理 且調試器也不處理的

操作系統將調用默認的全局異常處理函數來處理異常

這個全局函數是可以更改的

更改辦法是調用函數:SetUnhandledExceptionFilter



查看完整回答
反對 回復 2023-01-15
?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

這個里面涉及的問題可能比較多? 
如果你使用SEH(結構化異常處理)那么你可以捕獲絕大多數的異常,但是在結構化異常處理是不能和確定性資源清理一起使用的使用的,簡單的說你不能像這樣去定義一個對象 
A a; 

使用關鍵字 
__try 
__except 
__finally 

你可能需要下面兩個函數 
GetExceptionCode 
GetExceptionInformation 

這是2個例子 
DWORD FilterFunction() 

printf("1 "); // printed first 
return EXCEPTION_EXECUTE_HANDLER; 


VOID main(VOID) 

__try 

__try 

RaiseException(1, // exception code 
0, // continuable exception 
0, NULL); // no arguments 

__finally 

printf("2 "); // this is printed second 


__except ( FilterFunction() ) 

printf("3\n"); // this is printed last 



BOOL SafeDiv(INT32 dividend, INT32 divisor, INT32 *pResult) 

__try 

*pResult = dividend / divisor; 

__except(GetExceptionCode() == EXCEPTION_INT_DIVIDE_BY_ZERO ? 
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) 

return FALSE; 

return TRUE; 


最后再提醒你,__try只能和__except或者(注意這里是“或者”)__finally連用,不能__try{...}__except(){...}__finally{...}這樣使用


查看完整回答
反對 回復 2023-01-15
  • 2 回答
  • 0 關注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號