Public Sub ShowError(strModule As String, strProcedure As String, lngErrorNumber As Long, strErrorDescription As String, showMsg As String)
十年的新津縣網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整新津縣建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“新津縣網(wǎng)站設(shè)計(jì)”,“新津縣網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
'
'錯(cuò)誤處理中心過(guò)程,寫數(shù)據(jù)庫(kù)日志表或?qū)懭罩疚募?/p>
'
'strModule '模塊名稱
'strProcedure '過(guò)程名稱
'lngErrorNumber '錯(cuò)誤ID號(hào)
'strErrorDescription '錯(cuò)誤描述
'showMsg '是否顯示本過(guò)程內(nèi)錯(cuò)誤顯示信息(值:"Y" or "N")
'Error表結(jié)構(gòu)(f001 (Date)發(fā)生時(shí)間, f002 (nvarchar50)模塊名稱, f003 (nvarchar50)過(guò)程名稱, f004 (nvarchar50)錯(cuò)誤ID號(hào), _
f005 (nvarchar300)錯(cuò)誤描述,f006 (nvarchar50)版 本 號(hào), f007 (nvarchar50)用戶名稱, f008 (nvarchar50)網(wǎng)卡地址
'ErrorCode表結(jié)構(gòu) f001 (nvarchar20)錯(cuò)誤代碼, f002 (nvarchar255)錯(cuò)誤信息, f003 (numeric9)錯(cuò)誤級(jí)別
' 級(jí)別說(shuō)明: '10'以下,一般錯(cuò)誤,不影響操作
' '11-20',嚴(yán)重錯(cuò)誤,不能操作,程序執(zhí)行退出
On Error GoTo ErrorHandle
Dim strMessage As String
Dim strCaption As String
Dim sVer As String
Dim intLogFile As Integer
Dim Res As New ADODB.Recordset
Dim ResErrorCode As New ADODB.Recordset
Dim strSQL As String
'對(duì)應(yīng)錯(cuò)誤號(hào),從ErrorCode表中找到對(duì)應(yīng)的錯(cuò)誤信息,0-1000 錯(cuò)誤號(hào)保留給VB
DBOpen ResErrorCode, "select * from errorcode where f001='" lngErrorNumber "'"
If Not (ResErrorCode.EOF Or ResErrorCode.BOF) Then
strMessage = ResErrorCode.Fields("f002")
If ResErrorCode.Fields("f003") 10 Then
MsgBox "產(chǎn)生一個(gè)嚴(yán)重錯(cuò)誤,可能影響到系統(tǒng)的可操作性,請(qǐng)立即聯(lián)系本系統(tǒng)開(kāi)發(fā)人員!", vbCritical, "嚴(yán)重錯(cuò)誤"
End If
End If
'寫錯(cuò)誤入文件----------------------------
intLogFile = FreeFile
Open App.Path "\" strIni.LogFile For Append As #intLogFile
Print #intLogFile, "***錯(cuò)誤"; VBA.Now "*** " "Version:" _
str$(App.Major) "." str$(App.Minor) "." Format(App.Revision, "0000")
Print #intLogFile, "Error: " lngErrorNumber
Print #intLogFile, "Description: " strErrorDescription
Print #intLogFile, "Module: " strModule
Print #intLogFile, "Procedure: " strProcedure
Print #intLogFile, ""
Close #intLogFile
If Len(strMessage) 2 Then strErrorDescription = strMessage
strMessage = "錯(cuò)誤: " "(" lngErrorNumber ")" strErrorDescription vbCrLf vbCrLf _
"模塊:" strModule "; 過(guò)程:" strProcedure
sVer = Trim(str$(App.Major) "." str$(App.Minor) "." _
Format(App.Revision, "0000"))
strCaption = "錯(cuò)誤 Version: " sVer
'寫錯(cuò)誤入數(shù)據(jù)庫(kù)表--------------------------
strSQL = "insert into error(f001,f002,f003,f004,f005,f006,f007,f008) values(" _
DateFmtB VBA.Now DateFmtE "," _
IIf(Len(Trim(strModule)) = 0, "null", "'" strModule "'") "," _
IIf(Len(Trim(strProcedure)) = 0, "null", "'" strProcedure "'") "," _
IIf(Len(Trim(lngErrorNumber)) = 0, "null", "'" lngErrorNumber "'") "," _
IIf(Len(Trim(strErrorDescription)) = 0, "null", "'" Replace(strErrorDescription, "'", "") "'") "," _
IIf(Len(Trim(sVer)) = 0, "null", "'" sVer "'") "," _
IIf(Len(Trim(sUserName)) = 0, "null", "'" sUserName "'") "," _
IIf(Len(Trim(sVer)) = 0, "null", "'" EthernetNO "'") ")"
Cn.Execute strSQL
'是否顯示未知錯(cuò)誤信息
If Trim(UCase(showMsg)) = "Y" Then MsgBox strMessage, vbCritical, strCaption
PROC_EXIT:
Set Res = Nothing
Set ResErrorCode = Nothing
Exit Sub
ErrorHandle:
Resume Next
本示例闡釋二進(jìn)制文件的基本輸入和輸出(使用 BinaryReader、BinaryWriter 和 FileStream 類。 在如何創(chuàng)建日志文件標(biāo)題下面有一個(gè)類似的主題。讀寫二進(jìn)制信息使您可以創(chuàng)建和使用通過(guò)其他輸入和輸出方法無(wú)法訪問(wèn)的文件。本示例還展示寫入非字符串?dāng)?shù)據(jù),并展示二進(jìn)制 I/O 的功能。
盡管計(jì)算機(jī)上的文件可以不同的類型和文件存儲(chǔ),但是,二進(jìn)制格式是文件的較常用格式之一。此處對(duì)創(chuàng)建二進(jìn)制文件的簡(jiǎn)短介紹使用基類 BinaryReader 和 BinaryWriter 從文件獲取信息,并將信息放入文件。這些類中的每個(gè)類均封裝一個(gè)信息流,因此,在進(jìn)一步操作之前,需要?jiǎng)?chuàng)建一個(gè)可用于來(lái)回寫信息的流。因?yàn)橐獎(jiǎng)?chuàng)建文件,所以可使用 FileStream 來(lái)公開(kāi)特定文件,在此情況下,如果該文件已存在,則可以修改該文件,或者如果該文件尚不存在,則可以創(chuàng)建該文件。在有 FileStream 之后,可以使用它來(lái)構(gòu)造 BinaryReader 和 BinaryWriter
在讀入信息之后,可以對(duì)信息進(jìn)行所需的任何操作。但是,在某些時(shí)候,您可能想要將信息寫回文件,因此需要 BinaryWriter。在本示例中,您將使用 Seek 方法將信息追加到文件結(jié)尾,因此,在開(kāi)始寫入之前,請(qǐng)確保指向文件的指針位于文件結(jié)尾。在使用 BinaryWriter 寫入信息時(shí)有多個(gè)選項(xiàng)。因?yàn)?Write 方法有足夠的重載用于您能夠?qū)懭氲乃行畔㈩愋?,所以,可以使?Write 方法向您的編寫器封裝的流寫入任何標(biāo)準(zhǔn)形式的信息。本情況下,還可以使用 WriteString 方法向流中寫入長(zhǎng)度預(yù)先固定的字符串。
VB Source: VB\ReadWrite.aspx
%@ Import Namespace="System.Text" %
%@ Import Namespace="System.IO" %
script language="VB" runat=server
Class TestBinary
Public Shared Function ReadFile(selection As String) As String
Dim output As StringBuilder = New StringBuilder()
Dim fs As FileStream = New FileStream("data.bin", FileMode.OpenOrCreate)
Dim r As BinaryReader = New BinaryReader(fs)
Try
r.BaseStream.Seek(0,SeekOrigin.Begin) ' 將文件指針設(shè)置到文件開(kāi)始
' 因?yàn)椴煌瑪?shù)據(jù)類型之間的很多轉(zhuǎn)換結(jié)果都是不可解釋的,
' 所以當(dāng)在其他類型與二進(jìn)制數(shù)據(jù)之間進(jìn)行轉(zhuǎn)換時(shí),
' 必須捕捉可能引發(fā)的任何潛在的異常...
' 能夠正確讀取數(shù)據(jù)依賴于如何寫入信息...
' 這與寫日志文件時(shí)不同。
Do While r.BaseStream.Position r.BaseStream.Length ' 當(dāng)未到達(dá)文件結(jié)尾時(shí)
Select Case selection
Case "Boolean"
output.Append( r.ReadBoolean().ToString() )
Case "String"
output.Append( r.ReadString() )
Case "Integer"
output.Append( r.ReadInt32().ToString() )
End Select
Loop
Finally
fs.Close()
End Try
return output.ToString()
End Function
Public Shared Function WriteFile(output As Object, selection As String) As String
Dim fs As FileStream = New FileStream("data.bin", FileMode.Create)
Dim w As BinaryWriter = New BinaryWriter(fs)
Dim strOutput As String = ""
w.BaseStream.Seek(0, SeekOrigin.End) ' 將文件指針設(shè)置到文件結(jié)尾
' 因?yàn)檎趯懙男畔⒖赡懿贿m合于所選擇用于寫入的特定樣式
' (例如,單詞“Hello”作為整數(shù)?),所以我們必須捕捉寫入
' 錯(cuò)誤,并通知用戶未能執(zhí)行該任務(wù)
Try
Select Case selection
Case "Boolean"
Dim b As Boolean = Convert.ToBoolean(output)
w.Write( b )
Case "String"
Dim s As String = Convert.ToString(output)
w.Write( s )
Case "Integer"
Dim i As Int32 = Convert.ToInt32(output)
w.Write(i)
End Select
Catch E As Exception
' 讓用戶知道未能寫入該信息
strOutput = "寫異常:" chr(13) _
"無(wú)法以所請(qǐng)求的格式寫入要寫入的信息。" _
chr(13) "請(qǐng)輸入嘗試寫入的數(shù)據(jù)類型的有效值"
End Try
fs.Close()
return strOutput
End Function
End Class
Sub btnAction_Click(src As Object, E As EventArgs)
Dim s As String = ""
' 寫出文件
s = TestBinary.WriteFile(txtInput.Text, lstDataIn.SelectedItem.Text)
If s = "" Then
Try
' 讀回信息,顯示信息...
txtOutput.Text = TestBinary.ReadFile(lstDataIn.SelectedItem.Text)
Catch Exc As Exception
' 讓用戶知道未能寫入信息
s = "讀異常:" chr(13) _
"無(wú)法以所請(qǐng)求的格式讀取要寫入的信息。" _
chr(13) "請(qǐng)輸入嘗試寫入的數(shù)據(jù)類型的有效值"
End Try
Else
txtOutput.Text = s
End If
End Sub
/script
html
head
link rel="stylesheet" href="intro.css"
/head
body style="background-color:f6e4c6"
form method=post runat="server"
p
table
tr
tdb
下面的示例使用 BinaryWriter 對(duì)象創(chuàng)建一個(gè)二進(jìn)制文件,然后使用 BinaryReader 讀取該信息。/b可以選擇不同的對(duì)象來(lái)將所需的信息寫入文件
此演示用于強(qiáng)調(diào)您需要知道如何讀取已寫入的二進(jìn)制文件。一旦以某種格式寫入數(shù)據(jù),就只能以該格式讀取該信息。但是,可以將多種不同的數(shù)據(jù)類型寫入文件。在此演示中,輸入任意字符串并將它們作為字符串讀取,對(duì)于整型,僅輸入整型數(shù)值項(xiàng)(試試浮點(diǎn)數(shù)字,然后看看會(huì)發(fā)生什么...);對(duì)于布爾型項(xiàng),僅輸入詞“false”和“true”。
p
hr
/td
/tr
/table
asp:Table id="basetable" runat="server" border="0" cellspacing="0" cellpadding="5"
asp:tablerow
asp:tablecell verticalalign="top"
請(qǐng)選擇要保存到二進(jìn)制文件的數(shù)據(jù)類型...
/asp:tablecell
asp:tablecell verticalalign="top"
asp:listbox id="lstDataIn" runat="server"
asp:listitemBoolean/asp:listitem
asp:listitem selected="true"String/asp:listitem
asp:listitemInteger/asp:listitem
/asp:listbox
/asp:tablecell
asp:tablecell verticalalign="top"
asp:button id="btnAction" onclick="btnAction_Click" Text="寫入/讀取文件" runat="server"/
/asp:tablecell
/asp:tablerow
Dim sw As StreamWriter = New StreamWriter(“c:\xxxxx.log”, True) 'true是指以追加的方式打開(kāi)指定文件
For i = 0 To j
temp = i.ToString
sw.WriteLine(temp)
sw.Flush()
Next
sw.Close()
sw = Nothing
在程序目錄下生成log目錄,用于保存日志文件。
自動(dòng)在log目錄中,生成日志文件,文件命名用年月日定義,如20100119_log.log。
在日志文件中,每行記錄一個(gè)時(shí)間點(diǎn)的運(yùn)行內(nèi)容,時(shí)間點(diǎn)的精度應(yīng)該達(dá)到毫秒。