濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > response.end的優(yōu)缺點(diǎn)介紹

response.end的優(yōu)缺點(diǎn)介紹

熱門(mén)標(biāo)簽:濰坊呼叫中心外呼系統(tǒng)供應(yīng)商 地圖標(biāo)注中心多少錢(qián)注冊(cè) 微信地圖標(biāo)注有什么用 不封卡外呼系統(tǒng)一般多少錢(qián) 重慶外呼電銷(xiāo)系統(tǒng)費(fèi)用 地圖標(biāo)注不完整被罰款 北京大興區(qū)地圖標(biāo)注 鄭州語(yǔ)音電銷(xiāo)機(jī)器人官網(wǎng) 電銷(xiāo)機(jī)器人一個(gè)多少錢(qián)

首先講講它的好處。

調(diào)試程序的時(shí)候用處也很有用,類(lèi)似設(shè)置斷點(diǎn),特別是你的程序有重大問(wèn)題,如有死循環(huán)的時(shí)候一般的response.write   查看中間結(jié)果是無(wú)法看到的,這時(shí)在response.write后加入response.end,這個(gè)查看中間結(jié)果很有用。

不過(guò),如果使用 Response.End、Response.Redirect 或 Server.Transfer 方法,將出現(xiàn) ThreadAbortException 異常。您可以使用 try-catch 語(yǔ)句捕獲此異常。
Response.End 方法終止頁(yè)的執(zhí)行,并將此執(zhí)行切換到應(yīng)用程序的事件管線中的 Application_EndRequest 事件。不執(zhí)行 Response.End 后面的代碼行。
此問(wèn)題出現(xiàn)在 Response.Redirect 和 Server.Transfer 方法中,因?yàn)檫@兩種方法均在內(nèi)部調(diào)用 Response.End。

解決方案 :

要解決此問(wèn)題,請(qǐng)使用下列方法之一:
• 對(duì)于 Response.End,調(diào)用 HttpContext.Current.ApplicationInstance.CompleteRequest 方法而不是 Response.End 以跳過(guò) Application_EndRequest 事件的代碼執(zhí)行。
• 對(duì)于 Response.Redirect,請(qǐng)使用重載 Response.Redirect(String url, bool endResponse),該重載對(duì) endResponse 參數(shù)傳遞 false 以取消對(duì) Response.End 的內(nèi)部調(diào)用。例如:
Response.Redirect ("Default.aspx", false);

Response.End()用法 

ASP開(kāi)發(fā)中可能有時(shí)候會(huì)用大段的if... else 的判斷,不過(guò)如果是動(dòng)態(tài)Response.write的內(nèi)容,你想更方便閱讀代碼,可以用Response.End()來(lái)終端ASP的執(zhí)行,也就類(lèi)似于Break的用法,舉個(gè)例子:

if (userid="")or(password="") then Response.Write("script lanuage=javascript>alert('UserName or Password is Empty!');location.href='../default.asp';/script>") Response.End() ‘這里進(jìn)行了中斷 end if 下面是不為空進(jìn)行讀取數(shù)據(jù)庫(kù)的操作,省略了n行代碼

這樣當(dāng)傳入的用戶名或密碼為空時(shí),自動(dòng)write提示信息信息,然后Response.End()中斷程序,從而達(dá)到if 。。。else的作用。

另外使用Response.End的時(shí)候,就是我們?nèi)粘U{(diào)試程序的時(shí)候,比如

相輸出拼接的SQL語(yǔ)句,而不想執(zhí)行下面的代碼,那么可以這么做

sql="select * from userinfo "response.Write(sql)response.End()rs.open sql ,conn,1,1 '這句是不會(huì)執(zhí)行的

如果怕加入Response.End()的地方過(guò)多而正式發(fā)布時(shí)候不好注釋掉的化,可以用個(gè)函數(shù)將其封裝起來(lái),如下面代碼:

sub debug() Response.End()end sub

上面的代碼修改如下:

sql="select * from userinfo "response.Write(sql)debug()rs.open sql ,conn,1,1 '這句是不會(huì)執(zhí)行的

這樣當(dāng)進(jìn)行正式發(fā)布時(shí),將函數(shù)debug中的語(yǔ)句注釋掉,就可以起到調(diào)試的作用,不過(guò)這個(gè)也有個(gè)問(wèn)題就是,如果你使用太多的debug(),可能在調(diào)試的時(shí)候程序會(huì)不能按照需要進(jìn)行中斷,可能有時(shí)候你不希望這些地方中斷執(zhí)行,那么我們來(lái)進(jìn)一步重構(gòu)debug()函數(shù),如下:

sub debug(isBreak) 'isBreak是boolean值的參數(shù),如果設(shè)置為true的時(shí)候則進(jìn)行中斷,否則,不進(jìn)行中斷處理 if isBreak then Response.End() endend sub

使用時(shí)候代碼如下:

sql="select * from userinfo "response.Write(sql)debug(false)rs.open sql ,conn,1,1 '這句是會(huì)執(zhí)行的rs.close()sql="select * from product "response.write(sql)debug(true)rs.open sql,conn,1,1 '這句不會(huì)執(zhí)行

好了,這樣基本上可以滿足我們控制中斷的需求了,不過(guò)只是簡(jiǎn)單的進(jìn)行了分析,其實(shí)還很不完善,調(diào)試需求可能還有很多,需要滿足,還需要進(jìn)一步重構(gòu)。其實(shí)程序開(kāi)發(fā)就是一個(gè)重構(gòu)重構(gòu)再重構(gòu)的過(guò)程,要不怎么會(huì)出來(lái)那么多的設(shè)計(jì)模式,都是前人從實(shí)際開(kāi)發(fā)重構(gòu)過(guò)程總結(jié)出來(lái)的經(jīng)驗(yàn),值得大家借鑒。

標(biāo)簽:佛山 唐山 攀枝花 鶴崗 海南 汕頭 揭陽(yáng) 撫州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《response.end的優(yōu)缺點(diǎn)介紹》,本文關(guān)鍵詞  response.end,的,優(yōu)缺點(diǎn),介紹,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《response.end的優(yōu)缺點(diǎn)介紹》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于response.end的優(yōu)缺點(diǎn)介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    滨州市| 哈尔滨市| 罗甸县| 台江县| 青州市| 丹棱县| 抚顺市| 开阳县| 景宁| 汉源县| 罗城| 田林县| 锡林浩特市| 开原市| 新竹县| 通许县| 吴旗县| 湄潭县| 富蕴县| 含山县| 西乌珠穆沁旗| 凤城市| 桐柏县| 墨竹工卡县| 自治县| 敦化市| 黄石市| 雅江县| 永靖县| 青阳县| 藁城市| 屯门区| 弥勒县| 定日县| 嘉定区| 巴彦县| 丁青县| 济南市| 左贡县| 富锦市| 商南县|