程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP技巧 >> asp運行過程中捕捉和保存asp錯誤的函數

asp運行過程中捕捉和保存asp錯誤的函數

編輯:ASP技巧

在asp調試的時候,經常是根據出現的錯誤提示來找到錯誤的地方,然後作相應的修改,直到沒有錯誤為止。這不僅是asp調試的方法,也是所有程序的調試方法。在ASP的運行過程中,如何更明白的顯示出現的錯誤在哪個頁面,第幾行,但又不能讓客戶端看到這個錯誤。所以想出來一個方法:使用on error resume next,將錯誤不顯示到頁面上,這樣就不會給客戶看到。但還要將錯誤寫到一個自定義的日志文件中,以便我們開發人員方便找到錯誤所在的頁面,或者對出現錯誤的情況下,轉向一個自定義的頁面上來,這樣能給客戶更好的體驗。
過程名:catch(str) 
功   能:清除IIS的錯誤提示信息,自定義錯誤提示返回給用戶,並將出錯信息保存到txt文件(當然你也可以稍做修改轉向自定義頁面等)
使用方法:

1 <% 2 on error resume next 3 '你的代碼,如數據庫連接 4 call catch("顯示給用戶的提示信息") 5 %>(鼠標移到代碼上去,在代碼的頂部會出現四個圖標,第一個是查看源代碼,第二個是復制代碼,第三個是打印代碼,第四個是幫助)

 catch 函數的具體代碼如下:

001 <% 002 option explicit 003 '例一--------------------------- 004 '必須和on error resume next一起使用,但在網頁沒有正式發布之前最好將其注釋掉,以免在調試時看不到出錯詳細信息 005 on error resume next 006 'i沒有定義,會出錯,使用catch清除錯誤並保存到記事本 007   008 call catch("頁面無法訪問") 009 '------------------------------- 010 '例二--------------------------- 011 function conn() 012   '必須和on error resume next一起使用 013   on error resume next 014   '...........你的連接數據庫代碼 015   call catch("數據庫打開錯誤") 016 end function 017 '------------------------------- 018 sub catch(str) 019     if err.number <> 0 then 020     dim tmp,path 021     '錯誤日志絕對路徑,如"/error_log.txt" 022     path = "/table/error_log.txt" 023     tmp = tmp & "出錯頁面:" & geturl & vbcrlf 024     tmp = tmp & "錯誤時間:" & now() & vbcrlf 025     tmp = tmp & "來訪IP:" & ip & vbcrlf 026     tmp = tmp & "提示信息:" & str & vbcrlf 027     tmp = tmp & "錯誤代號:" & err.number & vbcrlf 028     tmp = tmp & "錯誤信息:" & err.description & vbcrlf 029     tmp = tmp & "應用程序:" & err.source & vbcrlf & vbcrlf & vbcrlf 030     tmp = tmp & file_read(path) 031     call file_save(tmp,path,1) 032     err.clear() 033     dIE(str) 034     end if 035 end sub 036 '以下為catch所用到的函數-------------------- 037 sub echo(str) 038     response.write(str) 039 end sub 040 sub dIE(str) 041     echo(str) : response.end() 042 end sub 043 function ip() 044     ip = request.servervariables("remote_addr") 045 end function 046 '獲取當前URL 047 function geturl() 048     dim tmp 049     if lcase(request.servervariables("https")) = "off" then 050     tmp = "http://" 051     else 052     tmp = "https://" 053     end if 054     tmp = tmp & request.servervariables("server_name") 055     if request.servervariables("server_port") <> 80 then 056     tmp = tmp & ":" & request.servervariables("server_port") 057     end if 058     tmp = tmp & request.servervariables("url") 059     if trim(request.querystring) <> "" then 060     tmp = tmp & "?" & trim(request.queryString) 061     end if 062     geturl = tmp 063 end function 064 '函數:讀取文件內容到字符串 065 function file_read(path) 066     dim tmp : tmp = "false" 067     if not file_exists(path) then file_read = tmp : exit function 068     dim stream : set stream = server.CreateObject("ADODB.Stream") 069     with stream 070     .type = 2 '文本類型 071     .mode = 3 '讀寫模式 072     .charset = "gb2312" 073     .open 074     .loadfromfile(server.MapPath(path)) 075     tmp = .readtext() 076     end with 077     stream.close : set stream = nothing 078     file_read = tmp 079 end function 080 '函數:保存字符串到文件 081 function file_save(str,path,model) 082     if model<>0 and model<>1 then model=1 083     if model=0 and file_exists(path) then file_save=true : exit function 084     dim stream : set stream = server.CreateObject("ADODB.Stream") 085     with stream 086     .type = 2 '文本類型 087     .charset = "gb2312" 088     .open 089     .writetext str 090     .savetofile(server.MapPath(path)),model+1 091     end with 092     stream.close : set stream = nothing 093     file_save = file_exists(path) 094 end function 095 '函數:檢測文件/文件夾是否存在 096 function file_exists(path) 097     dim tmp : tmp = false 098     dim fso : set fso = server.CreateObject("Scripting.FilesyStemObject") 099     if fso.fileexists(server.MapPath(path)) then tmp = true 100     if fso.folderexists(server.MapPath(path)) then tmp = true 101     set fso = nothing 102     file_exists = tmp 103 end function 104 %>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved