###Date:2018-2-10sql
=====================================================================數據庫
轉載自:http://blog.csdn.net/m_star_jy_sy/article/details/5578998服務器
不要放過First-chance exceptionspa
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字樣。.net
2)怎麼解決First-chance exception
First-chance exception的輸出表示程序產生了異常並被捕獲了。對於異常在調試階段應該儘量解決掉,不讓其出現異常。固然有些異常是預期的,有些異常是非預期的。
例如,ado的查詢語句,若是語句非法,則ado會報出異常。雖然有異常捕獲,程序能繼續運行,但這種錯誤明顯的是須要解決的。
對於一個高可用服務器而言,要求7×24小時的連續運行,若是異常頻繁出現,則會影響到服務器的持久運行能力。
因此,在程序發佈以前,過一遍First-chance exception是頗有必要的。
VC6可以修改調試器的默認行爲(Stop if no handled),改成Stop always。經過[Debug/Exceptions]菜單。
線程
這樣,當出現異常時,即使是有異常捕獲,也會彈出提示對話框,並停在異常代碼處。debug
改成Stop always後,查出幾個供應包平臺後臺線程掃描數據庫的幾個sql語句不對的bug。這樣的異常在後臺線程頻繁拋出,想必對服務器有些影響。
調試
3)調試器還能對其餘異常做出中止處理
Stack Overflow exception
Access Violation exception
等。
在程序發佈前,建議對這些異常過一遍。blog
參考文獻:get
http://support.microsoft.com/kb/250563/en-us
http://blogs.msdn.com/davidklinems/archive/2005/07/12/438061.aspx