濮阳杆衣贸易有限公司

主頁 > 知識庫 > response.end的優(yōu)缺點介紹

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

熱門標簽:濰坊呼叫中心外呼系統(tǒng)供應商 地圖標注中心多少錢注冊 微信地圖標注有什么用 不封卡外呼系統(tǒng)一般多少錢 重慶外呼電銷系統(tǒng)費用 地圖標注不完整被罰款 北京大興區(qū)地圖標注 鄭州語音電銷機器人官網(wǎng) 電銷機器人一個多少錢

首先講講它的好處。

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

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

解決方案 :

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

Response.End()用法 

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

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

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

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

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

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

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

sub debug() Response.End()end sub

上面的代碼修改如下:

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

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

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

使用時候代碼如下:

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

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

標簽:佛山 唐山 攀枝花 鶴崗 海南 汕頭 揭陽 撫州

巨人網(wǎng)絡通訊聲明:本文標題《response.end的優(yōu)缺點介紹》,本文關鍵詞  response.end,的,優(yōu)缺點,介紹,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《response.end的優(yōu)缺點介紹》相關的同類信息!
  • 本頁收集關于response.end的優(yōu)缺點介紹的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    乌兰察布市| 陵川县| 怀化市| 岢岚县| 麟游县| 青田县| 三河市| 新和县| 波密县| 定南县| 乌拉特前旗| 海兴县| 尼勒克县| 海伦市| 霍林郭勒市| 高平市| 汽车| 新龙县| 陵川县| 青冈县| 偃师市| 乌恰县| 盱眙县| 岳普湖县| 乌鲁木齐县| 焉耆| 泰安市| 阳新县| 连南| 承德市| 西乡县| 乡宁县| 甘孜县| 枣庄市| 托里县| 牙克石市| 屯昌县| 满城县| 怀宁县| 郴州市| 增城市|