• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      淺談C#中的異常處理

      2018-11-13 05:54:14孫鯨鵬南京技師學(xué)院
      數(shù)碼世界 2018年10期
      關(guān)鍵詞:開發(fā)人員除數(shù)應(yīng)用程序

      孫鯨鵬 南京技師學(xué)院

      1.概述

      在日常生活中我們不可避免的會(huì)遇到各種意想不到的事情,同樣開發(fā)人員編寫的應(yīng)用程序代碼在運(yùn)行過程中,也會(huì)發(fā)生各種難以預(yù)料的問題。當(dāng)代碼不能對遇到的問題進(jìn)行處理時(shí),就會(huì)發(fā)生“異常(EXCEPTION)”,隨之而來的是程序發(fā)生報(bào)錯(cuò)、數(shù)據(jù)丟失甚至于系統(tǒng)崩潰等問題。如果缺乏對這些異常的處理可能會(huì)給用戶帶來巨大的損失,如何對這些不可預(yù)知的異常的進(jìn)行處理也成了開發(fā)人員的必備技能。本文以C#開發(fā)環(huán)境中的異常處理為例展開闡述與分析。

      C#(C SHARP)是一款基于微軟.NET Framework框架的面向?qū)ο蟾呒?jí)編程語言。C#語言繼承并發(fā)揚(yáng)了VB語言的所見即所得的便利操作性和C++語言的高效率的特性,語法優(yōu)美規(guī)范、是.NET平臺(tái)開發(fā)的首選。盡管基于C#開發(fā)環(huán)境中的應(yīng)用程序穩(wěn)定性在不斷提高,但是由于客戶的使用環(huán)境與習(xí)慣千變?nèi)f化使得應(yīng)用程序的異常時(shí)有發(fā)生。C# 語言的異常處理功能可幫助開發(fā)人員處理應(yīng)用程序運(yùn)行時(shí)出現(xiàn)的任何意外或異常情況。異常處理利用try、catch和finally編寫相關(guān)代碼來實(shí)現(xiàn)某些邏輯,以處理異常情況。其次是在事后釋放資源時(shí),使用異常處理也有很大的幫助。

      2. try塊

      try塊包含的代碼通常需要執(zhí)行一些通用的資源釋放操作,或者需要從異常中恢復(fù),或者兩者都需要。釋放代碼應(yīng)放在一個(gè)finally塊中。try塊還可包含也許會(huì)拋出異常的代碼。異常恢復(fù)代碼應(yīng)放在一個(gè)或多個(gè)catch塊中。針對應(yīng)用程序能從中安全恢復(fù)的每一種異常,都應(yīng)該創(chuàng)建一個(gè)catch塊。一個(gè)try塊至少要有一個(gè)關(guān)聯(lián)的catch塊或finally塊,單獨(dú)一個(gè)try塊是沒有意義的,也是不合法的。

      3. catch塊

      catch塊內(nèi)的代碼用以響應(yīng)異常并執(zhí)行相關(guān)的代碼。單個(gè)try塊可以關(guān)聯(lián)多個(gè)catch塊,也可以不關(guān)聯(lián)任何catch塊。如果try塊中的代碼執(zhí)行過程中未遇到異常,那么CLR將不會(huì)執(zhí)行它的任何catch塊中的代碼。線程將跳過所有catch塊,直接執(zhí)行finally塊中的代碼。finally塊中的代碼執(zhí)行完畢后,執(zhí)行從finally塊后面的語句繼續(xù)。

      catch關(guān)鍵字后的圓括號(hào)中的表達(dá)式稱為捕捉類型。在C#中,必須將捕捉類型指定為System.Exception或者是其派生類型。

      多數(shù)情況下,異常并不是由代碼的執(zhí)行報(bào)錯(cuò)拋出,而是由調(diào)用堆棧中底層的其它方法所引發(fā)。在這種情況下,將由CLR將負(fù)責(zé)查找堆棧內(nèi)是否由對應(yīng)此異常類型的catch塊,如果存在,則執(zhí)行該catch塊內(nèi)代碼。如果不存在對應(yīng)的catch塊,則終止該進(jìn)程,并將此消息提示給用戶。

      4. finally塊

      finally塊包含的代碼是保證會(huì)執(zhí)行的代碼。通常為執(zhí)行的try塊中的操作所要求的資源釋放。finally 塊將在最后執(zhí)行,在 try 塊和任何匹配 catch 的塊之后執(zhí)行。 不管是否引發(fā)異?;蛘呤欠裾业脚c異常類型匹配的 catch 塊,finally 始終運(yùn)行。

      finally 塊內(nèi)代碼多用于資源的釋放,而不用等待由CLR中的GC來完成對象的回收工作。

      5.異常處理

      異常處理在軟件開發(fā)中的使用非常廣泛,其過程可以歸結(jié)為在異常發(fā)生前做好分類定義,發(fā)生后保護(hù)現(xiàn)場,處理異常,退出異常處理程序后,恢復(fù)被中斷程序的運(yùn)行。

      C# 開發(fā)人員可使用 try 塊對可能受異常影響的代碼進(jìn)行分區(qū)。 關(guān)聯(lián)的 catch 塊用于處理任何結(jié)果異常。 一個(gè)包含代碼的finally 塊,無論 try 塊中是否引發(fā)異常(例如,釋放在 try 塊中分配的資源),這些代碼都會(huì)運(yùn)行。 一個(gè) try 塊需要一個(gè)或多個(gè)關(guān)聯(lián)的 catch 塊或一個(gè) finally 塊,或兩者。C# 語言的異常處理功能中的try-catch、try-finally和 try-catch-finally 三個(gè)語句可以靈活運(yùn)用,使用非常方便。

      6.異常恢復(fù)

      對于所有已知錯(cuò)誤引發(fā)的異常,開發(fā)人員可以通過采取一些措施允許應(yīng)用程序從異常中恢復(fù)并繼續(xù)運(yùn)行。示例代碼如下:

      上述代碼計(jì)算兩個(gè)數(shù)相除的值,并將這個(gè)值通過字符串返回給調(diào)用函數(shù),若發(fā)生異常則由catch段代碼對result進(jìn)行賦值,給用戶合理的提示。如果除數(shù)b為0,那么CLR將拋出DivideByZeroExcep

      tion異常,并向用戶返回“除數(shù)不能為零!”這個(gè)結(jié)果。如果被除數(shù)a為最大整數(shù),而除數(shù)為最小實(shí)數(shù),那么結(jié)果超出取值范圍CLR將拋出

      OverflowException異常,并向用戶返回“數(shù)據(jù)溢出,無法顯示數(shù)據(jù)!”這個(gè)結(jié)果。這種做法極大的提升了用戶的體驗(yàn)性,同時(shí)也對開發(fā)人員對各種異常捕捉恢復(fù)提出了較高的要求。

      總結(jié):任何技術(shù)高明的程序員所編寫的應(yīng)用程序都不可能絕對不出差錯(cuò)的運(yùn)行,如何使用異常處理來提高應(yīng)用程序的友好性、容錯(cuò)性及準(zhǔn)確的錯(cuò)誤信息收集能力是優(yōu)秀的應(yīng)用程序必須具備的特點(diǎn)。本文在分析了異常處理技術(shù)的概念和思想后,對異常處理進(jìn)行了總結(jié),并針對C#語言給出了相關(guān)示例,探討了對應(yīng)的解決措施,希望能對讀者在開發(fā)應(yīng)用程序時(shí)有所幫助。

      猜你喜歡
      開發(fā)人員除數(shù)應(yīng)用程序
      除法中的簡便計(jì)算
      你會(huì)算嗎——以“除數(shù)是一位數(shù)的除法”為例
      余數(shù)一定要比除數(shù)小
      刪除Win10中自帶的應(yīng)用程序
      Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
      余數(shù)比除數(shù)小
      讀寫算(上)(2016年4期)2016-12-01 03:19:52
      讓W(xué)indows 10進(jìn)入開發(fā)者模式
      電腦迷(2015年12期)2015-04-29 23:22:51
      后悔了?教你隱藏開發(fā)人員選項(xiàng)
      電腦愛好者(2015年6期)2015-04-03 01:20:56
      關(guān)閉應(yīng)用程序更新提醒
      電腦迷(2012年15期)2012-04-29 17:09:47
      三星電子將開設(shè)應(yīng)用程序下載商店
      宁蒗| 梁山县| 来宾市| 逊克县| 尼玛县| 米脂县| 城固县| 灌云县| 甘孜县| 嘉义市| 张家港市| 汝州市| 遂川县| 建瓯市| 宁蒗| 陆川县| 晋宁县| 牙克石市| 孝感市| 厦门市| 五台县| 岳普湖县| 威远县| 宝清县| 竹山县| 黑山县| 咸宁市| 潮州市| 平邑县| 沙河市| 凉城县| 全椒县| 大关县| 麻栗坡县| 米林县| 广宗县| 河东区| 洛南县| 兴城市| 高阳县| 娱乐|