Om du skall använda den helt själv, eller inom en ganska snäv krets människor skulle jag faktiskt rekommendera att göra en ny typ: Ett sätt är att använda Err.Raise och lyfta felet till den anropande funktionen. Då får du ta hand om felet där istället. Du kan definiera egna meddelanden eller bara skicka vidare ado-felet. Exempel:Err-problem...
Hej. Skall försöka förklara mitt problem så gott jag kan.
Jag håller på att skriva en klass med massa funktioner för databasanrop.
Ibland går ju dessa snett och jag vill på något sätt returnera VAD som gått fel. (Alltså mer än en boolean OM något blivit fel)
Hur gör ni andra?? Hur meddelar ni det anropande formuläret vad som gåt fel.
PS. Provade att returnera Err.Number för att i formuläret köra Err.Raise men det gick mindre bra då beskrivning och källa inte kommer med...
Hoppas ni förstår mitt dilemma. Jag antar att ni allihop har haft liknande funderingar förut...Sv: Err-problem...
<code>
'I egen modul
Public Type ErrorType
Number As Integer 'Om du vill ha nummer
Description As String
Source As String
Severity As Integer 'Eller en enum, kanske?
End Type
</code>
Verkar det för ineffektivt så kan du ju ha en egen lookup-table och skicka runt felkoder.<br><br>Jag måste faktiskt säga att vad gäller felhantering så är jag nästan aldrig på VBs sida.
/Niklas JanssonSv: Err-problem...
/MartinSv: Err-problem...
<code>
'Class: Class1
Option Explicit
Public Function MyMethod(Value As Long) As Long
On Error GoTo MyMethod_Err
MyMethod = Value / Value
MyMethod_Exit:
Exit Function
MyMethod_Err:
Select Case Err.Number
Case Else
Err.Raise Err.Number, TypeName(Me) & ":" & Err.Source, Err.Description, Err.HelpFile, Err.HelpContext
End Select
End Function
'Form: Form1
Option Explicit
Private Sub Form_Load()
Dim MyClass As Class1
Dim varTemp As Long
On Error GoTo Form_Load_Err
Set MyClass = New Class1
varTemp = MyClass.MyMethod(0)
Form_Load_Exit:
Exit Sub
Form_Load_Err:
MsgBox Err.Description, vbCritical, Err.Source
Resume Form_Load_Exit
End Sub
</code>