專(zhuān)利名稱(chēng):應(yīng)用于分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種應(yīng)用于分布式網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,特別是指一種在客戶(hù)端、服務(wù)器端以及傳輸通信協(xié)議程序中利用預(yù)定的格式撰寫(xiě)其各自的錯(cuò)誤處理程序代碼,使得當(dāng)客戶(hù)端程序以及服務(wù)器端程序發(fā)生錯(cuò)誤時(shí),能將發(fā)生錯(cuò)誤的文件名稱(chēng)與文件功能,通過(guò)一延伸標(biāo)記語(yǔ)言格式字符串的形式輸出的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法。
背景技術(shù):
爪哇腳本語(yǔ)言已經(jīng)大量被應(yīng)用于當(dāng)今的分布式網(wǎng)際網(wǎng)絡(luò)中,盡管其因?yàn)榫哂锌缙脚_(tái)的特性,使得在整體開(kāi)發(fā)難度上相對(duì)較低,但其本身所提供的錯(cuò)誤處理機(jī)制卻相當(dāng)薄弱。現(xiàn)有的爪哇腳本語(yǔ)言?xún)?nèi)建有錯(cuò)誤嘗試與捕捉語(yǔ)法(try,throw,and catch)作為錯(cuò)誤處理的機(jī)制。當(dāng)位于錯(cuò)誤嘗試區(qū)塊中的呼叫發(fā)生錯(cuò)誤時(shí),即停止程序的運(yùn)作,并跳至錯(cuò)誤處理機(jī)制中進(jìn)行處理。然而,上述的功能卻僅限制在目前所執(zhí)行的文件上,如此一來(lái),當(dāng)遠(yuǎn)程服務(wù)器發(fā)生程序錯(cuò)誤時(shí),其發(fā)生錯(cuò)誤的文件名稱(chēng)以及對(duì)應(yīng)的功能并無(wú)法讓程序開(kāi)發(fā)者順利獲知,無(wú)可避免地,將增加程序除錯(cuò)的困難性。
請(qǐng)參閱圖1,圖1為一分布式網(wǎng)際網(wǎng)絡(luò)10的示意圖。網(wǎng)際網(wǎng)絡(luò)最少包含有一客戶(hù)端12、一服務(wù)器端13以及一傳輸通信協(xié)議15用來(lái)溝通客戶(hù)端12與服務(wù)器端13。當(dāng)客戶(hù)端12欲存取數(shù)據(jù)庫(kù)17內(nèi)的資料時(shí),客戶(hù)端12可呼叫服務(wù)器端13,由服務(wù)器端13對(duì)數(shù)據(jù)庫(kù)17進(jìn)行存取。服務(wù)器端12與客戶(hù)端13間的資料溝通,均是通過(guò)傳輸通信協(xié)議15達(dá)成。舉例來(lái)說(shuō),位于客戶(hù)端12的使用者可能位于A位置,當(dāng)其使用一瀏覽器(browser)欲瀏覽B位置的服務(wù)器(端)13的網(wǎng)站資料時(shí),必先于瀏覽器上的命令列輸入一符合傳輸通信協(xié)議15的控制命令以及網(wǎng)站位置(如http//XYZ.com),此例中的傳輸通信協(xié)議15即是架構(gòu)在超文本傳輸協(xié)議(hyper text transmission protocol,HTTP)的基礎(chǔ)上。服務(wù)器端13在接受到來(lái)自于客戶(hù)端12的要求時(shí),便會(huì)向數(shù)據(jù)庫(kù)17存取資料(本例中可為一網(wǎng)頁(yè)內(nèi)容),此網(wǎng)頁(yè)內(nèi)容便能顯示在客戶(hù)端12使用者的顯示屏上。又,假設(shè)使用者欲通過(guò)文件傳輸協(xié)議(file transmissionprotocol,F(xiàn)TP)對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)進(jìn)行資料存取時(shí),其同樣可于瀏覽器的命令列鍵入如ftp//ABC.org的命令,如此一來(lái)便能對(duì)ABC.org地址上的資料進(jìn)行上/下載的動(dòng)作。
然而,在上述由客戶(hù)端12向服務(wù)器端13發(fā)出請(qǐng)求,并交由服務(wù)器端13處理以向數(shù)據(jù)庫(kù)17存取資料的過(guò)程中可能發(fā)生任何預(yù)期以外的錯(cuò)誤?,F(xiàn)今的爪哇腳本語(yǔ)言并沒(méi)有提供完整的錯(cuò)誤堆棧供程序開(kāi)發(fā)者除錯(cuò)以及供使用者回報(bào)。
因此,由上可知,上述的現(xiàn)有技術(shù),在實(shí)際使用上,顯然有不便與缺點(diǎn)存在,可加以改進(jìn)。
于是,本發(fā)明人有感于上述缺點(diǎn)可以改善,潛心研究并配合理論的運(yùn)用,終于提出一種設(shè)計(jì)合理且有效改善上述缺點(diǎn)的本發(fā)明。
發(fā)明內(nèi)容
本發(fā)明的主要目的是利用爪哇腳本語(yǔ)言程序本身的錯(cuò)誤嘗試與捕捉語(yǔ)法,配合將發(fā)生錯(cuò)誤的文件名稱(chēng)與功能,利用一延伸標(biāo)記語(yǔ)言格式字符串由主程序呼叫子程序的反方向回傳,使得程序開(kāi)發(fā)者得以搜集到完整的錯(cuò)誤。經(jīng)由本發(fā)明所提供的方法,應(yīng)用于現(xiàn)今分布式網(wǎng)際網(wǎng)絡(luò)架構(gòu)的環(huán)境下,使得不論發(fā)生在客戶(hù)端或服務(wù)器端乃至于遠(yuǎn)程呼叫程序的錯(cuò)誤,都能以延伸標(biāo)記格式語(yǔ)言格式字符串的形式搜集并傳遞至客戶(hù)端主程序錯(cuò)誤處理程序。因此,程序開(kāi)發(fā)者將能更清楚地了解到究竟是哪里發(fā)生了錯(cuò)誤。
本發(fā)明提供一種應(yīng)用于分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法。分布式網(wǎng)際網(wǎng)絡(luò)包含有一客戶(hù)端、一服務(wù)器端以及一數(shù)據(jù)庫(kù),客戶(hù)端包含有至少一主程序,每一主程序包含有至少一子程序,服務(wù)器端同樣包含有至少一主程序,每一服務(wù)器端主程序包含有至少一子程序,以及一遠(yuǎn)程呼叫程序??蛻?hù)端與服務(wù)器端是通過(guò)一傳輸通信協(xié)議彼此聯(lián)系。本發(fā)明的爪哇腳本語(yǔ)言錯(cuò)誤處理方法包含有提供客戶(hù)端主程序一錯(cuò)誤處理程序,當(dāng)執(zhí)行客戶(hù)端主程序發(fā)生錯(cuò)誤時(shí),呼叫客戶(hù)端主程序錯(cuò)誤處理程序,以產(chǎn)生對(duì)應(yīng)的一延伸標(biāo)記語(yǔ)言格式字符串;提供對(duì)應(yīng)于客戶(hù)端子程序的一錯(cuò)誤處理程序,當(dāng)執(zhí)行客戶(hù)端子程序發(fā)生錯(cuò)誤時(shí),呼叫客戶(hù)端子程序錯(cuò)誤處理程序,以產(chǎn)生對(duì)應(yīng)的延伸標(biāo)記語(yǔ)言格式字符串,并將該延伸標(biāo)記語(yǔ)言格式字符串以一第一預(yù)定順序經(jīng)由子程序錯(cuò)誤處理程序傳送至主程序錯(cuò)誤處理程序;提供對(duì)應(yīng)于遠(yuǎn)程呼叫程序的一錯(cuò)誤處理程序,當(dāng)執(zhí)行遠(yuǎn)程呼叫程序發(fā)生錯(cuò)誤時(shí),呼叫遠(yuǎn)程呼叫程序錯(cuò)誤處理程序,以產(chǎn)生對(duì)應(yīng)的延伸標(biāo)記語(yǔ)言格式字符串,此延伸標(biāo)記語(yǔ)言格式字符串經(jīng)由遠(yuǎn)程呼叫程序錯(cuò)誤處理程序傳送至客戶(hù)端,之后同樣遵照第一預(yù)定順序傳送至客戶(hù)端主程序錯(cuò)誤處理程序;提供對(duì)應(yīng)于服務(wù)器端主程序的一錯(cuò)誤處理程序,當(dāng)執(zhí)行服務(wù)器端主程序發(fā)生錯(cuò)誤時(shí),呼叫服務(wù)器端主程序錯(cuò)誤處理程序,以產(chǎn)生對(duì)應(yīng)的該延伸標(biāo)記語(yǔ)言格式字符串,服務(wù)器端主程序延伸標(biāo)記語(yǔ)言格式字符串經(jīng)由服務(wù)器端主程序錯(cuò)誤處理程序傳遞,并以第一預(yù)定順序經(jīng)由客戶(hù)端子程序錯(cuò)誤處理程序傳遞至客戶(hù)端主程序錯(cuò)誤處理程序;提供對(duì)應(yīng)于服務(wù)器端子程序的一錯(cuò)誤處理程序,當(dāng)執(zhí)行服務(wù)器端子程序發(fā)生錯(cuò)誤時(shí),呼叫服務(wù)器端子程序錯(cuò)誤處理程序,以產(chǎn)生對(duì)應(yīng)的延伸標(biāo)記語(yǔ)言格式字符串,服務(wù)器端子程序延伸標(biāo)記語(yǔ)言格式字符串以一第二預(yù)定順序經(jīng)由服務(wù)器端子程序錯(cuò)誤處理程序傳遞至服務(wù)器端主程序錯(cuò)誤處理程序,此延伸標(biāo)記語(yǔ)言格式字符串子傳送至客戶(hù)端后,再以第一預(yù)定順序傳遞至客戶(hù)端主程序錯(cuò)誤處理程序;以及提供傳輸通信協(xié)議一服務(wù)器端延伸標(biāo)記語(yǔ)言格式字符串傳遞程序與遠(yuǎn)程呼叫程序錯(cuò)誤處理程序配合,分別用來(lái)傳遞服務(wù)器端延伸標(biāo)記語(yǔ)言格式字符串與遠(yuǎn)程呼叫程序延伸標(biāo)記語(yǔ)言格式字符串至客戶(hù)端。
圖1為分布式網(wǎng)際網(wǎng)絡(luò)的示意圖。
圖2為本發(fā)明的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法的流程示意圖。
具體實(shí)施例方式
請(qǐng)參閱圖2,圖2為本發(fā)明的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法的流程示意圖。網(wǎng)際網(wǎng)絡(luò)50包含有一客戶(hù)端100、一服務(wù)器端150、一傳輸通信協(xié)議200以及一數(shù)據(jù)庫(kù)250。
當(dāng)使用者通過(guò)一使用者接口102執(zhí)行客戶(hù)端主程序時(shí)(步驟104)發(fā)生錯(cuò)誤,其主程序中有一錯(cuò)誤處理程序代碼區(qū)塊專(zhuān)門(mén)用來(lái)處理主程序發(fā)生錯(cuò)誤的情況。當(dāng)執(zhí)行客戶(hù)端主程序發(fā)生錯(cuò)誤時(shí),即可呼叫主程序錯(cuò)誤處理程序,并將錯(cuò)誤以一延伸標(biāo)記語(yǔ)言(XML)格式字符串的形式傳送至主程序錯(cuò)誤處理堆棧。所利用的方法為爪哇腳本語(yǔ)言程序中所內(nèi)建的嘗試以及錯(cuò)誤捕捉功能。主程序包含有至少一子程序,于執(zhí)行子程序(步驟106)發(fā)生錯(cuò)誤時(shí),同樣利用嘗試以及錯(cuò)誤捕捉功能干子程序內(nèi)錯(cuò)誤處理程序代碼區(qū)塊捕捉發(fā)生錯(cuò)誤的子程序文件名稱(chēng)與功能,并同樣以延伸標(biāo)記語(yǔ)言格式字符串的形式傳遞至子程序錯(cuò)誤處理堆棧(步驟107)。子程序錯(cuò)誤處理堆棧將響應(yīng)子程序錯(cuò)誤所產(chǎn)生的延伸標(biāo)記語(yǔ)言格式字符串以一第一預(yù)定順序傳遞至主程序錯(cuò)誤處理堆棧105。此第一預(yù)定順序正好與主程序呼叫子程序執(zhí)行的順序相反。換句話(huà)說(shuō),當(dāng)主程序A包含有子程序B,而子程序B另外包含有一子程序C時(shí),一般來(lái)說(shuō)各程序的執(zhí)行順序?qū)锳→B→C。在本發(fā)明中,當(dāng)子程序C發(fā)生錯(cuò)誤時(shí),其對(duì)應(yīng)產(chǎn)生的延伸標(biāo)記語(yǔ)言格式字符串將由其對(duì)應(yīng)的錯(cuò)誤處理堆棧開(kāi)始傳遞至子程序B的錯(cuò)誤處理堆棧然后才是主程序A的錯(cuò)誤處理堆棧。之后,所有客戶(hù)端的錯(cuò)誤處理堆棧的內(nèi)容(XML格式字符串)將可由程序呼叫顯示在客戶(hù)端的顯示屏上(如步驟109所示)。由于XML格式字符串包含有主程序(或子程序)發(fā)生錯(cuò)誤的程序功能以及文件名稱(chēng)等信息,所以?xún)H顯示讓系統(tǒng)維護(hù)者或是程序開(kāi)發(fā)者知悉便已足夠。
服務(wù)器端150同樣包含有至少一主程序,而每個(gè)主程序亦可包含有至少一子程序。當(dāng)執(zhí)行主程序151發(fā)生錯(cuò)誤時(shí),主程序內(nèi)的錯(cuò)誤處理程序代碼區(qū)塊便可捕捉發(fā)生錯(cuò)誤的主程序文件功能以及名稱(chēng),并以延伸標(biāo)記語(yǔ)言格式字符串的形式輸出至主程序錯(cuò)誤處理堆棧(步驟152),而其所屬子程序于執(zhí)行時(shí)(步驟153)如果同樣發(fā)生錯(cuò)誤,同樣利用本身的錯(cuò)誤處理程序代碼區(qū)塊進(jìn)行錯(cuò)誤捕捉,并傳送至子程序?qū)?yīng)的錯(cuò)誤處理堆棧154。與客戶(hù)端的情況類(lèi)似,子程序錯(cuò)誤處理堆棧154所搜集到的子程序延伸標(biāo)記語(yǔ)言格式字符串是以一第二預(yù)定順序傳遞至主程序錯(cuò)誤處理堆棧152,其中此第二預(yù)定順序是與主程序呼叫子程序執(zhí)行的順序相反。
傳輸通信協(xié)議(較佳為一XMLHttp傳輸通信協(xié)議)200包含有一XML遠(yuǎn)程呼叫程序201專(zhuān)門(mén)用來(lái)處理來(lái)自于客戶(hù)端100對(duì)服務(wù)器端150的要求,或是服務(wù)器端150響應(yīng)客戶(hù)端100的結(jié)果(此遠(yuǎn)程呼叫程序201一般來(lái)說(shuō)是儲(chǔ)存于服務(wù)器端150)。當(dāng)此遠(yuǎn)程呼叫程序201發(fā)生錯(cuò)誤時(shí),同樣呼叫遠(yuǎn)程呼叫程序錯(cuò)誤處理程序,并將所得的延伸標(biāo)記語(yǔ)言格式字符串傳遞到遠(yuǎn)程呼叫程序錯(cuò)誤處理堆棧202,之后同樣會(huì)傳送到客戶(hù)端100。而服務(wù)器端主程序或服務(wù)器端子程序執(zhí)行發(fā)生錯(cuò)誤所對(duì)應(yīng)產(chǎn)生的延伸標(biāo)記語(yǔ)言格式字符串則是經(jīng)由同樣位于傳輸通信協(xié)議200內(nèi)的服務(wù)器端XML格式字符串傳遞程序203往客戶(hù)端100傳送。更精確地說(shuō),服務(wù)器端子程序執(zhí)行153發(fā)生錯(cuò)誤所產(chǎn)生的延伸標(biāo)記語(yǔ)言格式字符串將遵循上述的第二預(yù)定順序,尤其本身對(duì)應(yīng)的錯(cuò)誤處理堆棧開(kāi)始經(jīng)由服務(wù)器端主程序錯(cuò)誤處理堆棧152傳送至服務(wù)器端XML格式字符串傳遞程序203,之后再遵循第一預(yù)定順序由客戶(hù)端子程序錯(cuò)誤處理堆棧107傳送至客戶(hù)端主程序處理堆棧105。
傳輸通信協(xié)議200另外包含有一XML遠(yuǎn)程呼叫程序204,和上述的遠(yuǎn)程呼叫程序的目的相同,都是客戶(hù)端100與服務(wù)器端150間的橋梁。本發(fā)明的方法另外包含的記錄于客戶(hù)端主程序錯(cuò)誤處理堆棧105所搜集到的所有延伸標(biāo)記語(yǔ)言格式字符串功能,此功能可由此遠(yuǎn)程呼叫程序204實(shí)現(xiàn)??蛻?hù)端100將通過(guò)此遠(yuǎn)程呼叫程序204讓服務(wù)器端得以記錄客戶(hù)端主程序錯(cuò)誤堆棧105所搜集的延伸標(biāo)記格式字符串(如步驟155)至數(shù)據(jù)庫(kù)250。
由于傳輸通信協(xié)議較佳為一XMLHttp通信協(xié)議,客戶(hù)端100與服務(wù)器端150間傳送的資料均需符合XMLHttp通信協(xié)議的資料格式,也就是說(shuō),由服務(wù)器端150欲經(jīng)由傳輸通信協(xié)議200傳送的資料均為XMLHttp格式,故在此狀況下,必須有判斷來(lái)自于服務(wù)器端150的資料是否屬于記載錯(cuò)誤程序功能與文件名稱(chēng)的特殊字符串。此特殊字符串較佳為一<error>字符串,當(dāng)判斷由服務(wù)器端150回傳的XMLHttp格式字符串中包含有此特殊<error>字符串時(shí),即可判斷此為響應(yīng)程序錯(cuò)誤的錯(cuò)誤處理程序所產(chǎn)生,故需經(jīng)過(guò)服務(wù)器端格式字符串傳遞程序203往客戶(hù)端100傳遞。否則,其可直接依照原先預(yù)設(shè)的傳遞路徑,也就是由服務(wù)器端經(jīng)XMLHttp遠(yuǎn)程呼叫程序201傳送至客戶(hù)端100。
如下為客戶(hù)端的一范例程序的程序原始碼<pre listing-type="program-listing"><HTML><HEAD><script type=“text/javascript”src=“client ErrorHandle.js”></script>//引用客戶(hù)端錯(cuò)誤處理程序clientHrrorHandle.js//<dp n="d5"/><script LANGUAGE=j(luò)avascript>main();function main(){try{ subFunction(); }catch(e){ /使用了爪哇腳本語(yǔ)言中的錯(cuò)誤嘗試以及捕捉(try and catch)語(yǔ)法/ //第一個(gè)參數(shù)固定為“e”; //第二個(gè)參數(shù)為程序功能“main”; //第三個(gè)參數(shù)為程序?qū)嶓w文件名稱(chēng)“clientSample.asp”; errorDialogV2(e,“main”,“clientSample.asp”);//rrorDialogV2函數(shù)為引用彈出錯(cuò)誤信息接口// }finally{ }//finally}/******************************************///子程序“subFunction”,同樣也是使用了嘗試捕捉語(yǔ)法/******************************************/function subFunction(){ try{ subSubFunction(); }catch(e){ var functionName=“subFunction”; var fileName=“clientSample.asp” /******************************************/ //第一個(gè)參數(shù)固定為“e” //第二個(gè)參數(shù)為程序功能名稱(chēng) //第三個(gè)參數(shù)為程序?qū)嶓w文件名稱(chēng) /******************************************/ throw errorHandle(e,functionName,fileName);<dp n="d6"/> }finally{ }//finally}/******************************************///子程序subFunction的子程序subSubFunction,或另外一個(gè)子程序,亦使用了嘗試捕捉語(yǔ)法/******************************************/function subSubFunction(){ try{ throw“Error occurred”;//發(fā)生錯(cuò)誤,即丟出所謂的“Error occurred信息”// }catch(e){ var functionName=“subSubFunction”; var filename=“clientSample.asp” /******************************************/ //第一個(gè)參數(shù)固定 //第二個(gè)參數(shù)為程序功能 //第三個(gè)參數(shù)為程序?qū)嶓w文件名稱(chēng) /******************************************/ throw errorHandle(e,functionName,fileName); }finally{ }//finally}</SCRIPT></HEAD><BODY></BODY></HTML></pre>由上述的客戶(hù)端范例程序可以發(fā)現(xiàn),需引用對(duì)應(yīng)于此客戶(hù)端范例程序的錯(cuò)誤處理程序errorHandle,一旦有錯(cuò)誤發(fā)生時(shí),即呼叫此錯(cuò)誤處理程序,并將錯(cuò)誤發(fā)生的文件名稱(chēng)與程序功能以延伸標(biāo)記語(yǔ)言格式字符串的形式輸出。在此實(shí)施例中,因?yàn)檩敵鲇小癊rror occurred”的信息,故代表為subSubFunction在執(zhí)行時(shí)發(fā)生錯(cuò)誤。所引用的客戶(hù)端錯(cuò)誤處理程序errorHandle的原始程序代碼如下<pre listing-type="program-listing">function errorHandle(e,functionName,fileName){ try{//當(dāng)?shù)谝粋€(gè)參數(shù)e型態(tài)為一對(duì)象時(shí)// if(typeof(e)==“object”){ retum“<error>”+e.description+“<function name=””+functiortName+””/><file name=””+fileName+””/></error></error>”; }else if(typeof(e)==“string”){//當(dāng)?shù)谝粋€(gè)參數(shù)e型態(tài)為一字符串時(shí)// if(e.match(/<error>/i)==null){//判斷此字符串是否為<error>,并分別有不同的格式輸出// return“<error>”+e+”<function name=””+functionName+””/><filename=””+fileName+””/></error>”; }else{ return e+“<error><function name=””+functionName+””/><filename=””+fileName+””/></error>”; } }else{ return“<error>”+e+“<functionname=””+functionName+””/><filename=””+filename+””/></error>\ } }catch(e){alert(“Catch Error in”+filename)}}</pre>如此一來(lái),便在客戶(hù)端錯(cuò)誤處理堆棧有如下的XML格式字符串的輸出<pre listing-type="program-listing"><errors> <error> Error occurred ?。糵uncition name=“subSubFunction”/> <file name=“clientSample.asp”/><dp n="d8"/> </error> <error> <function name=“SubFunction”/> <file name=“clientsample.asp”/> </error> <error> <function name=“main”/> <file name=“clientsample.asp”/> </error> </errors></pre>由此可見(jiàn),此XML格式字符串的回傳方向是從發(fā)生錯(cuò)誤的子程序開(kāi)始以一與程序呼叫執(zhí)行方向(由main→subFunction→subSubFunction)相反的第一方向順序回傳至主程序錯(cuò)誤處理堆棧。
繼續(xù)提供應(yīng)用于服務(wù)器端的一范例程序如下<pre listing-type="program-listing"><%@Language=JavaScript%><!--引用服務(wù)器端錯(cuò)誤信息處理程序--><!--#include File=“serverErrorHandle.inc”--><%/******************************************///程序起始點(diǎn)/******************************************/main();/******************************************///主程序“main”/******************************************/function main(){ try{ sunFunction(); }catch(e){ var functionName=“main”;<dp n="d9"/> var filename=“serverSample.asp”; /******************************************/ //第一個(gè)參數(shù)固定為“e” //第二個(gè)參數(shù)為程序功能“main” //第三個(gè)參數(shù)為程序?qū)嶓w文件名稱(chēng)“serverSample.asp” /******************************************/ error Write(e,functionName,fileName) }finally{ }}/******************************************///子程序“subFunction”/******************************************/function sunFunction(){ try{ subFunction(); }catch(e){ var functionName=“subFunction” var fileName=“serverSample.asp”; /******************************************/ //第一個(gè)參數(shù)固定為“e” //第二個(gè)參數(shù)為程序功能“subFunction” //第三個(gè)參數(shù)為程序?qū)嶓w文件名稱(chēng)“serverSample.asp” /******************************************/ throw errorHandle(e,functionName,fileName); }finally{ }}/******************************************///另一子程序“subSubFunction”<dp n="d10"/>/******************************************/function subSubFunction(){ try{ throw“Error occurred”//出現(xiàn)”Error occurred”字符串// }catch(e){ var functionName=“subSubFunction”; var fileName=“serverSample.asp”; /******************************************/ //第一個(gè)參數(shù)固定為“e” //第二個(gè)參數(shù)為程序功能“subSubFunction” //第三個(gè)參數(shù)為程序?qū)嶓w文件名稱(chēng)”serverSample.asp” /******************************************/ throw errorHandle(e,functionName,fileName); }finally{ }}%></pre>如前所述,服務(wù)器端同樣有一錯(cuò)誤處理程序crrorHandle來(lái)對(duì)服務(wù)器端主程序或子程序執(zhí)行發(fā)生錯(cuò)誤時(shí)進(jìn)行處理。在本實(shí)施例中,同樣于子程序subSubFunction執(zhí)行時(shí)發(fā)生錯(cuò)誤(由字符串Error occurred出現(xiàn)可知)。此服務(wù)器端程序的執(zhí)行毫無(wú)疑問(wèn)的是由主程序開(kāi)始一直往子程序方向執(zhí)行,當(dāng)每一程序代碼區(qū)塊發(fā)生錯(cuò)誤時(shí),由程序代碼區(qū)塊所對(duì)應(yīng)的錯(cuò)誤處理程序捕捉錯(cuò)誤,并將錯(cuò)誤以XML格式字符串的形式輸出,而XML格式字符串的傳遞方向與程序被呼叫執(zhí)行的方向恰好相反。接下來(lái)為服務(wù)器端錯(cuò)誤處理程序的一實(shí)施例<pre listing-type="program-listing"><%/******************************************///處理錯(cuò)誤信息包裝XML格式/******************************************/function errorHandle(e,functionName,fileName){ try{<dp n="d11"/> if(typeof(e)==“object”){ return“<error>”+e.description+“<functionname=””+functionName+””/><file name=””+fileName+””/></error></error>”; }else if(typeof(e)==“string”){ if(e.match(/<error>/i)==null){ retutn“<error>”+e+“<function name=””+functionName+””><filename=””+fileName+””/></error>”; }else{ return e+“<error><function name=””+functionName+””/><filename=””+fileName+””></error”; } }else{ return“<error>”+e+“<functionname=””+functionName+””/><file name=””+fileName+””></error; } }catch(e){Response.Write(“<error>”+e.description+“in File”+fileName+“</error>)”;}}/******************************************///處理錯(cuò)誤信息包裝XML格式并寫(xiě)至客戶(hù)端/******************************************/function errorWrite(e,functionName,fileName){ try{ Response.CharSet=“Big5”; Response.ContentType=“text/xml”; var errorString=“”; if(typeof(e)==“object”) { errorString=“<errors>”+errorString+“<error>”+e.description+“ <function name=””+functionName+””/><file<dp n="d12"/>name=””+fileName+””/></error></errors>”; }//if else if(typeof(e)==“string”){ if(e.match(/<error>/i)==null){ errorString=“<errors>”+errorString+“<error>”+e+“<functionname=””+functionName+””/><file name=””+fileName+””></error></errors>”; }else{ errorString=“<errors>”+errorString+e+“<error><functionname=””+functionName+””/><file name=””+fileName+””/></error></errors>”; } }else{ errorString=“<errors>”+errorString+“<error>”+e+“<functionname=””+functionName+””/><file name=””+fileName+””/></error></errors>”; }//else Response.Write(errorString) }catch(e){Response.Write.(“<error>”+e.description+“in File”+fileName+“</error>”);}}%></pre>服務(wù)器端子程序的錯(cuò)誤被包裝成XML格式字符串后,以一第二預(yù)定順序由對(duì)應(yīng)的子程序錯(cuò)誤處理堆棧開(kāi)始傳送。由于服務(wù)器端的XML格式字符串需要由傳輸通信協(xié)議的服務(wù)器端XML格式字符串傳遞程序傳送到客戶(hù)端的主程序錯(cuò)誤處理堆棧,以便客戶(hù)端主程序錯(cuò)誤處理堆棧能搜集所有不論客戶(hù)端或服務(wù)器端甚至遠(yuǎn)程呼叫程序執(zhí)行所發(fā)生的錯(cuò)誤。與客戶(hù)端錯(cuò)誤處理程序相同,此服務(wù)器端錯(cuò)誤處理程序?qū)嵤├婚_(kāi)始即把錯(cuò)誤信息(包含有發(fā)生錯(cuò)誤的文件名稱(chēng)以及程序功能)以XML格式字符串的方式進(jìn)行包裝,然后再傳送至傳輸通信協(xié)議以及客戶(hù)端。
如下是用于客戶(hù)端呼叫服務(wù)器端的遠(yuǎn)程呼叫程序一實(shí)施例的程序原始碼<pre listing-type="program-listing"><!--引用錯(cuò)誤處理機(jī)制彈出錯(cuò)誤信息接口--><!--#include File=“errorPopV2.asp”--><dp n="d13"/><HTML><HEAD><!--引用客戶(hù)端錯(cuò)誤處理程序--><script type=“text/javascript”src=“clientErrorHandlejs”></script><!--引用通訊協(xié)議錯(cuò)誤處理程序--><script type=“text/javascript”src=“xmlHttp.js”></script><script LANGUAGE=j(luò)avascript>/******************************************///程序起始點(diǎn)/******************************************/main();/******************************************///主程序/******************************************/function main(){ try{ subFunction() }catch(e){ /******************************************/ //第一個(gè)參數(shù)固定為“e” //第二個(gè)參數(shù)為程序功能“main” //第三個(gè)參數(shù)為程序?qū)嶓w文件名稱(chēng)“clientSample.asp” /******************************************/ errorDialogV2(e,“main”,“clientSample.asp”); }finally{ }//finally}/******************************************///子程序subFunction/******************************************/<dp n="d14"/>function subFunction(){ try{ subSubFunction(); }catch(e){ var functionName=“subFunction”; var fileName=“clientSample.asp”; /******************************************/ //第一個(gè)參數(shù)固定為“e” //第二個(gè)參數(shù)為程序功能“subFunction” //第三個(gè)參數(shù)為程序?qū)嶓w文件名稱(chēng)“clientSample.asp” /******************************************/ throw errorHandie(e,functionName,fileName); }finally{ }//finally}/******************************************/V子程序subSubFunction/******************************************/function subSubFunction(){ try{ /******************************************/ //呼叫服務(wù)器端提供服務(wù) //第一個(gè)參數(shù)為程序路徑 //第二個(gè)參數(shù)為傳遞的對(duì)象 /******************************************/ GetInfoV2(“serverSample.asp”,null); }catch(e){ var functionName=“subSubFunction”; var fileName=“serverSample.asp” /******************************************/<dp n="d15"/> //第一個(gè)參數(shù)固定為“e” //第二個(gè)參數(shù)為程序功能 //第三個(gè)參數(shù)為程序?qū)嶓w文件名稱(chēng) /******************************************/ throw errorHandle(e,functionName,fileName); }finally{ }//finally}</SCRIPT></HEAD><BODY></BODY></HTML></pre>遠(yuǎn)程呼叫程序在執(zhí)行時(shí)同樣有發(fā)生錯(cuò)誤的可能,一旦其發(fā)生錯(cuò)誤,同樣提供有對(duì)應(yīng)的錯(cuò)誤處理程序與錯(cuò)誤處理堆棧用來(lái)捕捉搜集錯(cuò)誤,以延伸標(biāo)記語(yǔ)言格式字符串的形式往客戶(hù)端傳遞,XMLHttp傳輸通信協(xié)議本身除了負(fù)責(zé)客戶(hù)端與服務(wù)器端間的溝通之外,另外包含有判斷由服務(wù)器端所回傳的資料中是否有<error>字符串的存在,若有,則代表此不是一般的客戶(hù)端與服務(wù)器端間傳遞的資料,而是一錯(cuò)誤資料。故此錯(cuò)誤資料將由服務(wù)器端XML格式字符串傳遞程序往客戶(hù)端傳遞。
以上提供了包括客戶(hù)端、服務(wù)器端以及遠(yuǎn)程呼叫程序的錯(cuò)誤范例程序的原始碼以及錯(cuò)誤處理程序原始碼等信息。其實(shí),通過(guò)上述幾種特定的程序代碼撰寫(xiě)格式,當(dāng)服務(wù)器端接收客戶(hù)端呼叫服務(wù)發(fā)生錯(cuò)誤時(shí),即可將完整的錯(cuò)誤信息堆棧捕捉并以XML文件格式描述并交由傳輸通信協(xié)議傳遞;而傳輸通信協(xié)議則可完整捕捉服務(wù)器端所輸出的包含錯(cuò)誤信息的標(biāo)記延伸語(yǔ)言格式字符串,并將其傳遞至客戶(hù)端處理;而客戶(hù)端更能把由服務(wù)器經(jīng)傳輸通信協(xié)議傳送至客戶(hù)端的XML錯(cuò)誤字符串完整捕捉,最后輸出XML錯(cuò)誤字符串供程序開(kāi)發(fā)者快速參考。此最后輸出XML錯(cuò)誤字符串的格式的一實(shí)施例;<pre listing-type="program-listing"><?xml version=“1.0”encoding=“big5?”><SMEPDM-ErrorLog><dp n="d16"/><errors> <errors> <error>Error occurred<function name=“subSubFunction”/> ?。糵ile name=“serverSample.asp”/> </error> <error> <function name=“sunFunction”/> <file name=“serverSample.asp”/> </error> <error> <function name=“main”/> <file name=“serverSample.asp”/> </error> </error> <error><error position=“protocol”> ?。糵unction name=“GetInfoV2”/> ?。糵ile name=“xmlHttp.js”/> </error> <error> <function name=“subSubFunction”/> <file name=“clientSample.assp”/> </error> <error> <function name=“subFunction”/> <file name=“clientSample.asp”/> </error> <error> <function name=“main”/> <file name=“clientSample.asp”/> </error><dp n="d17"/> </error></SMEPDM-ErrorLog></pre>此輸出后的XML格式字符串即可以如上的方式顯示或讓程序開(kāi)發(fā)者得以了解究竟是那邊發(fā)生錯(cuò)誤。以本實(shí)施例而言,當(dāng)尋找到所謂的<error>字符串以及“Error occurred”顯示的位置時(shí),即代表發(fā)生錯(cuò)誤的位置是在服務(wù)器端的子程序subSubFunction上。以此種文本方式顯示整個(gè)分布式網(wǎng)際網(wǎng)絡(luò)發(fā)生錯(cuò)誤的文件名稱(chēng)或功能,程序開(kāi)發(fā)者可一目了然地通過(guò)此記錄文件的設(shè)置,達(dá)到快速獲悉錯(cuò)誤所在的目的,自然也能縮短整個(gè)除錯(cuò)的時(shí)程。由上述的錯(cuò)誤記錄文件,我們可知,當(dāng)服務(wù)器端文件serverSample.asp中的subSubfunction功能出錯(cuò)時(shí),其對(duì)應(yīng)產(chǎn)生的XML格式字符串自將順著服務(wù)器端文件呼叫的逆向,由服務(wù)器端傳遞至傳輸通信協(xié)議。而傳輸通信協(xié)議將通過(guò)判斷<error>特殊字符串的存在,獲悉此時(shí)由服務(wù)器端回傳的為一揭示錯(cuò)誤信息的XML格式字符串,而能由服務(wù)器端XML格式字符串傳遞程序傳遞到客戶(hù)端。然后再由客戶(hù)端呼叫程序的逆向傳遞到客戶(hù)端(主程序)錯(cuò)誤處理堆棧搜集。此搜集的結(jié)果將可被服務(wù)器端記錄成如上的文件內(nèi)容,或顯示在程序開(kāi)發(fā)者的顯示屏上。
上述的錯(cuò)誤信息顯示方式,是基于一種延伸標(biāo)記語(yǔ)言為基礎(chǔ)的錯(cuò)誤信息包裝方式。此包裝方式是提供一對(duì)起始卷標(biāo)(較佳為<errors>與</errors>),在此對(duì)起始卷標(biāo)間包含有至少一對(duì)節(jié)點(diǎn)卷標(biāo)(較佳為<error>與</error>)。每對(duì)節(jié)點(diǎn)卷標(biāo)之間包含有對(duì)應(yīng)于此對(duì)節(jié)點(diǎn)卷標(biāo)的一文件名稱(chēng)與程序功能(分別如clientSample.asp以及main)。此種錯(cuò)誤信息包裝方式另外包含有一預(yù)定字符串(如“Error occurred”)用來(lái)表示此預(yù)定字符串后的節(jié)點(diǎn)卷標(biāo)所包含的文件中的程序子執(zhí)行時(shí)發(fā)生錯(cuò)誤。此外,這些節(jié)點(diǎn)卷標(biāo)的排列方式,是依照一預(yù)定順序,此預(yù)定順序恰與文件中程序功能被呼叫執(zhí)行的順序相反。
相對(duì)于現(xiàn)有技術(shù),本發(fā)明分別對(duì)客戶(hù)端、服務(wù)器端以及傳輸通信協(xié)議提供一種基于延伸標(biāo)記語(yǔ)言的錯(cuò)誤處理程序以及執(zhí)行程序的撰寫(xiě)格式。如此一來(lái),不論是客戶(hù)端、服務(wù)器端乃至于遠(yuǎn)程呼叫程序于執(zhí)行發(fā)生錯(cuò)誤時(shí),對(duì)應(yīng)的錯(cuò)誤處理程序均能對(duì)這些錯(cuò)誤發(fā)生的程序功能與文件名稱(chēng)進(jìn)行處理,并以一延伸標(biāo)記語(yǔ)言格式字符串的形式,由程序呼叫的逆順序傳遞至客戶(hù)端主程序錯(cuò)誤處理堆棧。因此提供一完整的錯(cuò)誤信息以及一明了易懂的延伸標(biāo)記語(yǔ)言格式,讓程序開(kāi)發(fā)者能很快地了解程序錯(cuò)誤的發(fā)生位置,而加速整個(gè)除錯(cuò)的動(dòng)作。
以上所述僅為本發(fā)明的一較佳實(shí)施例,凡按照本發(fā)明申請(qǐng)專(zhuān)利范圍所做的一般變化與修改,都屬于本專(zhuān)利的覆蓋范圍。
權(quán)利要求
1.一種應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,該分布式網(wǎng)際網(wǎng)絡(luò)包含有一客戶(hù)端、一服務(wù)器端以及一數(shù)據(jù)庫(kù),該客戶(hù)端包含有至少一主程序,每一該主程序包含有至少一子程序,該服務(wù)器端同樣包含有至少一主程序,每一該服務(wù)器端主程序包含有至少一子程序,以及一遠(yuǎn)程呼叫程序,該客戶(hù)端與該服務(wù)器端是通過(guò)一傳輸通信協(xié)議相互聯(lián)系,包含有下列步驟(a)提供對(duì)應(yīng)于該客戶(hù)端主程序一錯(cuò)誤處理程序,當(dāng)執(zhí)行該客戶(hù)端主程序發(fā)生錯(cuò)誤時(shí),呼叫該客戶(hù)端主程序錯(cuò)誤處理程序,以產(chǎn)生對(duì)應(yīng)的一延伸標(biāo)記語(yǔ)言格式字符串;(b)提供對(duì)應(yīng)于該客戶(hù)端子程序的一錯(cuò)誤處理程序,當(dāng)執(zhí)行該客戶(hù)端子程序發(fā)生錯(cuò)誤時(shí),呼叫該客戶(hù)端子程序錯(cuò)誤處理程序,以產(chǎn)生對(duì)應(yīng)的該延伸標(biāo)記語(yǔ)言格式字符串,并將該延伸標(biāo)記語(yǔ)言格式字符串以一第一預(yù)定順序由該子程序錯(cuò)誤處理程序傳送至該主程序錯(cuò)誤處理程序;(c)提供對(duì)應(yīng)于該遠(yuǎn)程呼叫程序的一錯(cuò)誤處理程序,當(dāng)執(zhí)行該遠(yuǎn)程呼叫程序發(fā)生錯(cuò)誤時(shí),呼叫該遠(yuǎn)程呼叫程序錯(cuò)誤處理程序,以產(chǎn)生對(duì)應(yīng)的該延伸標(biāo)記語(yǔ)言格式字符串,由該遠(yuǎn)程呼叫程序錯(cuò)誤處理程序傳送至該客戶(hù)端,之后同樣遵照該第一預(yù)定順序?qū)⒃撨h(yuǎn)程程序延伸標(biāo)記語(yǔ)言格式字符串傳送至該客戶(hù)端主程序錯(cuò)誤處理程序;(d)提供對(duì)應(yīng)于該服務(wù)器端主程序的一錯(cuò)誤處理程序,當(dāng)執(zhí)行該服務(wù)器端主程序發(fā)生錯(cuò)誤時(shí),呼叫該服務(wù)器端主程序錯(cuò)誤處理程序,以產(chǎn)生對(duì)應(yīng)的該延伸標(biāo)記語(yǔ)言格式字符串往該客戶(hù)端傳遞,并以該第一預(yù)定順序由該客戶(hù)端子程序錯(cuò)誤處理程序傳遞至該客戶(hù)端主程序錯(cuò)誤處理程序;(e)提供對(duì)應(yīng)于該服務(wù)器端子程序的一錯(cuò)誤處理程序,當(dāng)執(zhí)行該服務(wù)器端子程序發(fā)生錯(cuò)誤時(shí),呼叫該服務(wù)器端子程序錯(cuò)誤處理程序,以產(chǎn)生對(duì)應(yīng)的該延伸標(biāo)記語(yǔ)言格式字符串,該服務(wù)器端子程序延伸標(biāo)記語(yǔ)言格式字符串是以一第二預(yù)定順序由該服務(wù)器端子程序錯(cuò)誤處理程序傳遞至該服務(wù)器端主程序錯(cuò)誤處理程序,之后傳送至該客戶(hù)端,再以該第一預(yù)定順序傳遞至該客戶(hù)端主程序錯(cuò)誤處理程序;以及(f)提供該傳輸通信協(xié)議一服務(wù)器端延伸標(biāo)記語(yǔ)言格式字符串傳遞程序,和該遠(yuǎn)程呼叫程序錯(cuò)誤處理程序配合,分別用來(lái)傳遞該服務(wù)器端延伸標(biāo)記語(yǔ)言格式字符串和該遠(yuǎn)程呼叫程序延伸標(biāo)記語(yǔ)言格式字符串至該客戶(hù)端;其中該客戶(hù)端主程序、該客戶(hù)端子程序、該服務(wù)器端主程序、該服務(wù)器端子程序以及該遠(yuǎn)程呼叫程序均包含有嘗試與捕捉的程序代碼撰寫(xiě)格式來(lái)與對(duì)應(yīng)的錯(cuò)誤處理程序配合,以輸出對(duì)應(yīng)的延伸標(biāo)記語(yǔ)言格式字符串。
2.如權(quán)利要求1所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于,另外包含有一步驟(g)由該客戶(hù)端遠(yuǎn)程呼叫該服務(wù)器端記錄將己傳送至該客戶(hù)端主程序錯(cuò)誤處理程序的該延伸標(biāo)記語(yǔ)言格式字符串。
3.如權(quán)利要求1所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于,另外包含有一步驟(h)由該客戶(hù)端顯示己傳送至該客戶(hù)端主程序錯(cuò)誤處理程序的該延伸標(biāo)記語(yǔ)言格式字符串。
4.如權(quán)利要求1所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的第一預(yù)定順序是與該客戶(hù)端主程序呼叫所屬子程序的順序相反。
5.如權(quán)利要求1所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的第二預(yù)定順序是與該服務(wù)器端主程序呼叫所屬子程序的順序相反。
6.如權(quán)利要求1所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的客戶(hù)端延伸標(biāo)記語(yǔ)言格式字符串包含有該客戶(hù)端主程序與該客戶(hù)端子程序發(fā)生錯(cuò)誤的一文件名稱(chēng)以及發(fā)生錯(cuò)誤的一程序功能。
7.如權(quán)利要求1所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的服務(wù)器端延伸標(biāo)記語(yǔ)言格式字符串包含有該服務(wù)器端主程序與該服務(wù)器端子程序發(fā)生錯(cuò)誤的一文件名稱(chēng)以及發(fā)生錯(cuò)誤的一程序功能。
8.如權(quán)利要求1所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的遠(yuǎn)程呼叫程序延伸標(biāo)記語(yǔ)言格式字符串包含有該遠(yuǎn)程呼叫程序發(fā)生錯(cuò)誤的一文件名稱(chēng)以及發(fā)生錯(cuò)誤的一程序功能。
9.如權(quán)利要求1所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的于判斷有該服務(wù)器端延伸標(biāo)記語(yǔ)言格式字符串由該服務(wù)器端回傳是依據(jù)該服務(wù)器端所回傳的一數(shù)據(jù)內(nèi)是否包含有一特殊字符串。
10.如權(quán)利要求9所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的特殊字符串為<error>。
11.如權(quán)利要求1所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的傳輸通信協(xié)議為一XMLHttp協(xié)議。
12.如權(quán)利要求1所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的客戶(hù)端主程序錯(cuò)誤處理程序與該客戶(hù)端子程序錯(cuò)誤處理程序同為一相同的程序代碼撰寫(xiě)而成。
13.如權(quán)利要求1所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的服務(wù)器端主程序錯(cuò)誤處理程序與該客戶(hù)端子程序錯(cuò)誤處理程序同為一相同的程序代碼撰寫(xiě)而成。
14.一種應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理的方法,該分布式網(wǎng)際網(wǎng)絡(luò)包含有一客戶(hù)端、一服務(wù)器端以及一XMLHttp傳輸通信協(xié)議用來(lái)聯(lián)系該客戶(hù)端以及該服務(wù)器端,該客戶(hù)端包含有至少一主程序,每一該主程序包含有至少一子程序,該服務(wù)器端同樣包含有至少一主程序,每一該服務(wù)器端主程序包含有至少一子程序,包含有下列步驟(a)提供該客戶(hù)端對(duì)應(yīng)于該客戶(hù)端一錯(cuò)誤處理程序,當(dāng)執(zhí)行該客戶(hù)端主程序或該客戶(hù)端子程序發(fā)生錯(cuò)誤時(shí),呼叫該客戶(hù)端錯(cuò)誤處理程序,以產(chǎn)生對(duì)應(yīng)的一延伸標(biāo)記語(yǔ)言格式字符串,并分別由一主程序錯(cuò)誤處理堆棧與一子程序錯(cuò)誤處理堆棧處理,且該子程序延伸標(biāo)記語(yǔ)言格式字符串是以一第一預(yù)定順序由該子程序錯(cuò)誤處理堆棧傳遞至該主程序錯(cuò)誤處理堆棧;(b)提供該傳輸通信協(xié)議一錯(cuò)誤處理程序,當(dāng)該客戶(hù)端主程序或客戶(hù)端子程序呼叫該服務(wù)器端主程序或服務(wù)器端子程序發(fā)生錯(cuò)誤時(shí),呼叫該傳輸通信協(xié)議錯(cuò)誤處理程序,以產(chǎn)生對(duì)應(yīng)的該延伸標(biāo)記語(yǔ)言格式字符串以由一遠(yuǎn)程錯(cuò)誤處理堆棧處理,該延伸標(biāo)記語(yǔ)言格式字符串同樣遵照該第一預(yù)定順序傳送至該主程序錯(cuò)誤處理堆棧;(c)提供對(duì)應(yīng)于該服務(wù)器端一錯(cuò)誤處理程序,當(dāng)執(zhí)行該服務(wù)器端主程序或子程序發(fā)生錯(cuò)誤時(shí),呼叫該服務(wù)器端錯(cuò)誤處理程序,以產(chǎn)生對(duì)應(yīng)的該延伸標(biāo)記語(yǔ)言格式字符串,并分別由一主程序錯(cuò)誤處理堆棧以及一子程序錯(cuò)誤處理堆棧處理,且該子程序延伸標(biāo)記語(yǔ)言格式字符串以一第二預(yù)定順序由該子程序錯(cuò)誤處理堆棧傳遞至該主程序錯(cuò)誤處理堆棧;以及(d)提供該傳輸通信協(xié)議一延伸標(biāo)記語(yǔ)言格式字符串傳遞程序,用來(lái)將該服務(wù)器端錯(cuò)誤處理程序所產(chǎn)生的延伸標(biāo)記語(yǔ)言格式字符串傳遞至該客戶(hù)端;其中,當(dāng)執(zhí)行該服務(wù)器端子程序發(fā)生錯(cuò)誤時(shí),對(duì)應(yīng)該服務(wù)器端子程序錯(cuò)誤所產(chǎn)生的延伸標(biāo)記語(yǔ)言格式字符串按照該第二預(yù)定順序由該服務(wù)器端傳遞至該傳輸通信協(xié)議,并由該延伸標(biāo)記語(yǔ)言格式字符串傳遞程序傳遞至該客戶(hù)端,再遵循該第一預(yù)定順序傳遞至該客戶(hù)端主程序處理堆棧;該客戶(hù)端主程序、該客戶(hù)端子程序、該服務(wù)器端主程序、該服務(wù)器端子程序以及該遠(yuǎn)程呼叫程序均包含有嘗試與捕捉的程序代碼撰寫(xiě)格式國(guó)際慣例來(lái)與對(duì)應(yīng)的錯(cuò)誤處理程序配合,以輸出對(duì)應(yīng)的延伸標(biāo)記語(yǔ)言格式字符串至對(duì)應(yīng)的錯(cuò)誤處理堆棧。
15.如權(quán)利要求14所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于,另外包含有一步驟(e)由該客戶(hù)端遠(yuǎn)程呼叫該服務(wù)器端記錄將己傳送至該客戶(hù)端錯(cuò)誤處理程序的該延伸標(biāo)記語(yǔ)言格式字符串。
16.如權(quán)利要求14所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于,另外包含有一步驟(f)由該客戶(hù)端顯示己傳送至該客戶(hù)端錯(cuò)誤處理程序的該延伸標(biāo)記語(yǔ)言格式字符串。
17.如權(quán)利要求14所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的第一預(yù)定順序與該客戶(hù)端主程序呼叫所屬子程序的順序相反。
18.如權(quán)利要求14所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的第二預(yù)定順序與該服務(wù)器端主程序呼叫所屬子程序的順序相反。
19.如權(quán)利要求14所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的客戶(hù)端延伸標(biāo)記語(yǔ)言格式字符串包含有該客戶(hù)端主程序與該客戶(hù)端子程序發(fā)生錯(cuò)誤的一文件名稱(chēng)以及發(fā)生錯(cuò)誤的一程序功能。
20.如權(quán)利要求14所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的服務(wù)器端延伸標(biāo)記語(yǔ)言格式字符串包含有該服務(wù)器端主程序和該服務(wù)器端子程序發(fā)生錯(cuò)誤的一文件名稱(chēng)以及發(fā)生錯(cuò)誤的一程序功能。
21.如權(quán)利要求14所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的傳輸通信協(xié)議錯(cuò)誤處理程序所產(chǎn)生的程序延伸標(biāo)記語(yǔ)言格式字符串包含有該客戶(hù)端呼叫該服務(wù)器端時(shí)發(fā)生錯(cuò)誤的一文件名稱(chēng)以及發(fā)生錯(cuò)誤的一程序功能。
22.如權(quán)利要求14所述的應(yīng)用于一分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的于判斷有該服務(wù)器端延伸標(biāo)記語(yǔ)言格式字符串由該服務(wù)器端回傳是依據(jù)該服務(wù)器端所回傳的一數(shù)據(jù)內(nèi)是否包含有一特殊字符串。
23.如權(quán)利要求22所述的腳本語(yǔ)言程序錯(cuò)誤處理方法,其特征在于所述的特殊字符串為<error>。
24.一種以延伸標(biāo)記語(yǔ)言為基礎(chǔ)的錯(cuò)誤信息包裝格式,包含有一對(duì)起始卷標(biāo)以及至少一對(duì)節(jié)點(diǎn)卷標(biāo)介于該對(duì)起始卷標(biāo)之間,每一對(duì)該節(jié)點(diǎn)卷標(biāo)之間包含有對(duì)應(yīng)于該對(duì)節(jié)點(diǎn)卷標(biāo)的一文件名稱(chēng)與一程序功能,該些節(jié)點(diǎn)卷標(biāo)是以一預(yù)定順序顯示,其中該預(yù)定順序相對(duì)于該節(jié)點(diǎn)對(duì)應(yīng)的該程序功能與被呼叫執(zhí)行的順序相反。
25.如權(quán)利要求24所述的錯(cuò)誤信息包裝格式,其特征在于所述的對(duì)起始卷標(biāo)為<errors)與</errors>。
26.如權(quán)利要求25所述的錯(cuò)誤信息包裝格式,其特征在于,另外提供一預(yù)定字符串用來(lái)指示包含有發(fā)生錯(cuò)誤的程序功能與文件名稱(chēng)的節(jié)點(diǎn)卷標(biāo)。
27.如權(quán)利要求26所述的錯(cuò)誤信息包裝格式,其特征在于所述的預(yù)定字符串為“Error occurre”。
28.如權(quán)利要求24所述的錯(cuò)誤信息包裝格式,其特征在于所述的節(jié)點(diǎn)卷標(biāo)為<error>與</error>。
全文摘要
一種應(yīng)用于分布式網(wǎng)際網(wǎng)絡(luò)的爪哇腳本語(yǔ)言程序錯(cuò)誤處理方法,分別對(duì)客戶(hù)端、服務(wù)器端以及傳輸通信協(xié)議提供一種錯(cuò)誤處理程序以及執(zhí)行程序的撰寫(xiě)格式??蛻?hù)端、服務(wù)器端乃至遠(yuǎn)程呼叫程序在執(zhí)行發(fā)生錯(cuò)誤時(shí),對(duì)應(yīng)的錯(cuò)誤處理程序均能以一延伸標(biāo)記語(yǔ)言格式字符串的形式,將發(fā)生錯(cuò)誤的程序功能與文件名稱(chēng)以程序呼叫的逆順序傳遞至客戶(hù)端主程序錯(cuò)誤處理堆棧。
文檔編號(hào)G06F9/40GK1517875SQ03100699
公開(kāi)日2004年8月4日 申請(qǐng)日期2003年1月17日 優(yōu)先權(quán)日2003年1月17日
發(fā)明者陳人豪, 盧東宏, 吳銓友, 林慶典 申請(qǐng)人:財(cái)團(tuán)法人工業(yè)技術(shù)研究院