異常處理之不要放過First-chance exception

原地址:http://blog.csdn.net/m_star_jy_sy/article/details/5578998

不要放過First-chance exception

1)什麼是First-chance exception
 VC6調試環境下(debug)運行程序時,經常在output窗口看到有
 First-chance exception in hotfoxd.exe (KERNEL32.DLL): 0xE06D7363: Microsoft C++ Exception.
 的輸出字樣。
 當調試程序時,若引發了異常,那麼調試器會得到通知,應用程序被掛起,由調試器決定如何來處理這個異常。而VC6調試器debug下對異常的默認處理爲Stop if no handled,
 即異常未處理(捕獲)時才停止。如果異常被程序捕獲(try...catch...),那麼調試器不會中斷程序,而是繼續運行,並在Output窗口輸出First-chance exception字樣。

2)怎麼解決First-chance exception
 First-chance exception的輸出表示程序產生了異常並被捕獲了。對於異常在調試階段應該儘可能解決掉,不讓其出現異常。當然有些異常是預期的,有些異常是非預期的。
 例如,ado的查詢語句,如果語句非法,則ado會報出異常。雖然有異常捕獲,程序能繼續運行,但這種錯誤明顯的是需要解決的。 
 對於一個高可用服務器而言,要求7×24小時的連續運行,如果異常頻繁出現,則會影響到服務器的持久運行能力。
 所以,在程序發佈之前,過一遍First-chance exception是很有必要的。
 VC6能夠修改調試器的默認行爲(Stop if no handled),改爲Stop always。通過[Debug/Exceptions]菜單。
 

這樣,當出現異常時,即便是有異常捕獲,也會彈出提示對話框,並停在異常代碼處。

 改爲Stop always後,查出幾個供應包平臺後臺線程掃描數據庫的幾個sql語句不對的bug。這樣的異常在後臺線程頻繁拋出,想必對服務器有些影響。
 

3)調試器還能對其他異常作出停止處理
 Stack Overflow exception
 Access Violation exception
 等。
 在程序發佈前,建議對這些異常過一遍。

 

參考文獻:

http://support.microsoft.com/kb/250563/en-us

http://blogs.msdn.com/davidklinems/archive/2005/07/12/438061.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章