資源描述:
《ch7_調(diào)試和錯(cuò)誤處理》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、第七章調(diào)試和錯(cuò)誤處理為什么需要調(diào)試程序由于人思維的局限性,很難保證人編寫(xiě)的程序不出現(xiàn)任何錯(cuò)誤,即使是非常優(yōu)秀的程序員也無(wú)法保證代碼不出現(xiàn)問(wèn)題。據(jù)統(tǒng)計(jì),在編碼過(guò)程中,有40%的時(shí)間花在編寫(xiě)代碼上,而另外60%的時(shí)間卻是花在程序的調(diào)試上的。因此,對(duì)代碼進(jìn)行調(diào)試,是軟件開(kāi)發(fā)人員的一項(xiàng)日常工作。在VS2005中調(diào)試應(yīng)用程序非中斷模式下的調(diào)試非中斷模式下的調(diào)試是指,不中斷程序的運(yùn)行,而是在程序運(yùn)行過(guò)程輸出一些程序運(yùn)行過(guò)程中的數(shù)據(jù),然后由開(kāi)發(fā)人員根據(jù)輸出的信息來(lái)對(duì)程序進(jìn)行診斷。可以使用Debug和Trace對(duì)象來(lái)輸出調(diào)試信息,調(diào)試信息將在
2、VS2005的輸出窗口顯示。在VS2005中調(diào)試應(yīng)用程序Debug與Trace的的用法DebugTraceDebug.Write(<調(diào)試信息>);Debug.WriteLine(<調(diào)試信息>);Trace.Write(<調(diào)試信息>);Trace.WriteLine(<調(diào)試信息>);在VS2005中調(diào)試應(yīng)用程序Debug與Trace的區(qū)別使用Debug和Trace都可以輸出調(diào)試信息,但它們之間存在如下區(qū)別:Debug對(duì)象只在調(diào)試模式下發(fā)揮作用,也就是說(shuō)只有在調(diào)試模式下才能看到用Debug輸出的調(diào)試信息。Trace對(duì)象在任何模式下
3、都能發(fā)揮作用,不受影響。在VS2005中調(diào)試應(yīng)用程序中斷模式下的調(diào)試中斷模式下的調(diào)試是指,在程序執(zhí)行時(shí),故意中斷程序的運(yùn)行,使程序運(yùn)行到特定位置后中斷運(yùn)行并進(jìn)入調(diào)試模式。進(jìn)入調(diào)試模式后,可利用VS2005的調(diào)試器對(duì)程序運(yùn)行時(shí)的數(shù)據(jù)進(jìn)行監(jiān)控,從而對(duì)程序進(jìn)行診斷。在VS2005中調(diào)試應(yīng)用程序進(jìn)入中斷模式的方法設(shè)置斷點(diǎn)設(shè)置斷定語(yǔ)句處理程序異常在VS2005中調(diào)試應(yīng)用程序中斷模式的調(diào)試方法監(jiān)視變量的內(nèi)容單步執(zhí)行代碼使用即時(shí)窗口和命令窗口在VS2005中調(diào)試應(yīng)用程序異常處理錯(cuò)誤處理是用處理程序運(yùn)行過(guò)程中可能會(huì)為生的錯(cuò)誤的,它可以用來(lái)處理
4、如下錯(cuò)誤:錯(cuò)誤的內(nèi)存訪問(wèn)(如數(shù)組索引超出數(shù)組大?。?shù)值運(yùn)算時(shí)的錯(cuò)誤(如溢出、除零等)硬件設(shè)備的故障處理操作系統(tǒng)異常(如可用內(nèi)存不能滿足程序的需要)程序特意安排的異常在VS2005中調(diào)試應(yīng)用程序異常處理最簡(jiǎn)單的異常:運(yùn)行時(shí)將會(huì)產(chǎn)生如下異常信息并中斷運(yùn)行:int[]myArray={1,2,3,4};intmyElem=myArray[4];Indexwasoutsidetheboundsofthearray.在VS2005中調(diào)試應(yīng)用程序異常處理的方法在C#中,可以捕獲程序中發(fā)生的異常,根據(jù)異常的類(lèi)型,進(jìn)行相應(yīng)的處理。處理異常的方
5、法是使用try...catch...finally語(yǔ)句組合來(lái)對(duì)異常進(jìn)行處理。在VS2005中調(diào)試應(yīng)用程序異常處理的方法try{<語(yǔ)句組>;}catch(<異常類(lèi)型><異常變量>){<異常處理代碼>;}catch(<異常類(lèi)型><異常變量>){<異常處理代碼>;}finally{<清理代碼>;}在VS2005中調(diào)試應(yīng)用程序異常處理語(yǔ)句各模塊的作用try{}塊:在try塊中的代碼所產(chǎn)生的異常將會(huì)被其后的異常處理代碼所捕獲,而不在try塊中的代碼將不被處理。catch{}塊:用來(lái)捕獲特定類(lèi)型的異常,并在其中包含異常的處理代碼。fina
6、lly{}塊:包含總是會(huì)執(zhí)行的代碼,一般用來(lái)執(zhí)行一些必要的清理工作。在VS2005中調(diào)試應(yīng)用程序異常處理示例:try{int[]myArray={1,2,3,4};intmyElem=myArray[4];}catch(IndexOutOfRangeExceptione){Console.WriteLine(“數(shù)組索引超出范圍,消息:{0}”,e.Message);}finally{Console.WriteLine(“異常處理完畢!”);}在VS2005中調(diào)試應(yīng)用程序手動(dòng)拋出異常的方法可使用thrownew<異常類(lèi)型>()的
7、方法來(lái)手動(dòng)拋出異常,示例:staticvoidMain(){try{thrownewException(“手動(dòng)拋出的異?!?;}catch(Exceptione){Console.WriteLine(e);}}