|
導(dǎo)讀網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機(jī)整體,實(shí)現(xiàn)資源的全面共享和有機(jī)協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計(jì)算機(jī)、存儲(chǔ)資源、數(shù)據(jù)... 網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機(jī)整體,實(shí)現(xiàn)資源的全面共享和有機(jī)協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計(jì)算機(jī)、存儲(chǔ)資源、數(shù)據(jù)資源、信息資源、知識(shí)資源、專家資源、大型數(shù)據(jù)庫、網(wǎng)絡(luò)、傳感器等。 當(dāng)前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認(rèn)為是互聯(lián)網(wǎng)發(fā)展的第三階段。 Web服務(wù)是一種完成分布式計(jì)算的相關(guān)新方法。在分布式計(jì)算中,應(yīng)用程序被設(shè)計(jì)為服務(wù)運(yùn)行在服務(wù)器上。客戶端通過一個(gè)可編程的接口訪問這些服務(wù)。當(dāng)在Web服務(wù)的執(zhí)行期間發(fā)生了異常,Web服務(wù)應(yīng)該不只是捕捉到異常,還應(yīng)該把異常傳回給Web服務(wù)的客戶端。因?yàn)閃eb服務(wù)提供一種平臺(tái)無關(guān)的方法來支持特定功能,所以Web服務(wù)中發(fā)生的異常也必須以一種平臺(tái)無關(guān)的方式被傳回。為了達(dá)到這個(gè)目的,必須確保Web服務(wù)所產(chǎn)生的異常兼容SOAP規(guī)范。本文中,我們將了解怎樣使用SoapException對(duì)象從Web服務(wù)中拋出異常,而SoapException對(duì)象提供了一種表示SOAP Fault的工業(yè)標(biāo)準(zhǔn)方法。我們還將了解怎樣在Web服務(wù)的客戶端應(yīng)用程序中處理這個(gè)異常。 簡(jiǎn)介 異常是正在執(zhí)行的程序所遇到的任何錯(cuò)誤情形或者意外行為。很多原因都可以引起異常,例如,代碼中錯(cuò)誤、操作系統(tǒng)資源不可用、公共語言運(yùn)行時(shí)(common language runtime)中的意外情況等等。然而應(yīng)用程序能夠從上述的一些情況中恢復(fù)執(zhí)行,但是大多數(shù)運(yùn)行時(shí)異常是不可恢復(fù)的。在這種情況下,需要一種有效的方法來處理這些異常并給調(diào)用者提供相同的異常。 用結(jié)構(gòu)化的異常處理方法來處理異常 在.NET Web服務(wù)中,對(duì)異常處理支持的關(guān)鍵點(diǎn)是由try...catch..finally語句提供的。關(guān)鍵字try放在可能拋出異常的普通處理代碼塊之前。關(guān)鍵字catch放在異常處理代碼塊之前。關(guān)鍵字finally放在那些經(jīng)常在異常處理后還需要執(zhí)行的代碼塊之前。一旦異常從try代碼塊中拋出,程序流切換到后面的第一個(gè)catch代碼塊。一套設(shè)計(jì)良好的錯(cuò)誤處理代碼塊可以成功的使程序變得更加健壯,使程序崩潰的機(jī)率變得更小,那是因?yàn)閼?yīng)用程序處理像這樣的錯(cuò)誤所采取的方法的緣故。處理異常的最好實(shí)踐可以總結(jié)如下: 經(jīng)常用try/finally塊包圍潛在的可能發(fā)生錯(cuò)誤的代碼,并且把catch語句集中在一個(gè)地方。用這種方法,try語句拋出異常,finally語句關(guān)閉或釋放資源,而catch語句則集中處理異常。 通常,catch語句塊從非常特殊到一般來排列異常。這個(gè)技巧使得異常被傳遞到一般catch塊之前先處理特殊異常。 大多數(shù)情況下,使用已有的異常類型。新的異常類型應(yīng)該僅在有計(jì)劃的情形下引進(jìn)。 使用異常的構(gòu)建方法。一個(gè)類的實(shí)現(xiàn)中在不同地方拋出同一個(gè)異常,這是非常普遍的現(xiàn)象。為了避免出現(xiàn)過量的這類代碼,使用助手方法創(chuàng)建異常和返回異常。 至此,我們已經(jīng)大致了解處理異常的最好實(shí)踐,下面就讓我們看看怎樣從Web服務(wù)中拋出異常。 從Web服務(wù)中拋出異常 在Web服務(wù)中處理異常與在Web或Windows應(yīng)用程序中處理異常沒有什么區(qū)別。但是,在設(shè)計(jì)Web服務(wù)中的異常塊時(shí),必須明白一個(gè)事實(shí),即你需要以一種平臺(tái)無關(guān)的基于SOAP規(guī)范的方式把異常信息傳遞給Web服務(wù)的客戶端。為了達(dá)到這個(gè)目的,你應(yīng)該使用SoapException類,它抽象了SOAP Fault創(chuàng)建過程的復(fù)雜度。SoapException類具有下列屬性,并且這些屬性必須在把異常拋出給客戶端之前被設(shè)定。 Message--異常的內(nèi)容 Code--指定Fault編碼類型(例如,ClientFaultCode和ServerFaultCode)的枚舉常量 Actor--發(fā)生異常的Web服務(wù)方法的URL Detail--Detail元素可以用來把更多的異常信息傳遞給調(diào)用者。(出處:CSDN) 網(wǎng)絡(luò)的神奇作用吸引著越來越多的用戶加入其中,正因如此,網(wǎng)絡(luò)的承受能力也面臨著越來越嚴(yán)峻的考驗(yàn)―從硬件上、軟件上、所用標(biāo)準(zhǔn)上......,各項(xiàng)技術(shù)都需要適時(shí)應(yīng)勢(shì),對(duì)應(yīng)發(fā)展,這正是網(wǎng)絡(luò)迅速走向進(jìn)步的催化劑。 |
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!