Avatar billede jrl0469 Nybegynder
22. november 2002 - 08:29 Der er 11 kommentarer og
1 løsning

Fejlbehandling...

Hej er der en eller flere blandt jer i den anden ende der har erfaring med fejlbehandling?

Nedenstående kode (efter *) gentages ca. xxx gange:

Private Sub loadPulse()
On Error GoTo Fejlbehandling
bPulseloaded = False
 
  Set PulseApp = CreateObject("Pulse.LabShop.Application")
  bPulseloaded = True
  Exit Sub

(*)
Fejlbehandling:
If Err.Number <> 0 Then
  mCls.sFejl = "Fejl# " & Str(Err.Number) & " oprettet af " & Err.Source & Chr(13) & Err.Description
  MsgBox mCls.sFejl, , "Error", Err.HelpFile, Err.HelpContext
End If

  mCls.dataCls.Skriv mCls.sFejl & " fejl - LoadPulse  (PulseClass)",Log
  Resume Next
 
End Sub

Kan det svare sig at oprette en sub med den del af koden fra (*) til resume next ?
Avatar billede Spotgun Seniormester
22. november 2002 - 08:48 #1
Muligvis - hvis du laver det som en sub, kan du nok få lidt gavn af det, rent praktisk, ved at du kan bruge samme errorhandler-sub, til alle de steder du vil fange fejl (og gi' brugeren samme svar)...
Avatar billede jrl0469 Nybegynder
22. november 2002 - 08:54 #2
Hi spotgun
Spørgsmålet er blot om Err.Number m.v. overføres til den tænkte sub.
Avatar billede Spotgun Seniormester
22. november 2002 - 09:07 #3
Ahh.... Du kunne jo evt. lave det som en sub der ta'r err.number og de andre ting som parameter? Jeg kan ikke huske om den automatisk bruger samme error-object, hvis du bare kalder sub'en...
Avatar billede jrl0469 Nybegynder
22. november 2002 - 09:47 #4
Jahh... jeg prøver når jeg for tid!
Avatar billede martin_moth Mester
22. november 2002 - 14:28 #5
Hmm - hvis ikke din nye Sub med fejlbehandlingen skal bruges andre steder i programmet, er der ingen fordel i at lave den - bortset fra lidt mere overskuelighed, hvis du mener at du får det ved at putte den i en sub.

PS: I steder for at lave en sub der tager err.number, err.description og de andre som parameter, kan den så ikke tage hele "fejlen" som et errObject?

Private Sub Registrerfejl(ByVal objError As ErrObject)
  If objError.Number <> "0" Then
    mCls.sFejl = "Fejl# " & objError.Number & " oprettet af " _
    & objError.Source & Chr(13) & objError.Description
    .. osv
- bare en ide
Avatar billede jrl0469 Nybegynder
25. november 2002 - 08:18 #6
Hej Martin
Jeg er ikke helt sikker på hvad du mener, sub'en skal være tilrådighed for adskillige klasser, form's og moduler...

MEN jeg prøver da lige dit forslag!
Avatar billede jrl0469 Nybegynder
25. november 2002 - 08:56 #7
Martin !!!
Hva' vil du angive som "objError" i -> Registrerfejl(ByVal objError As ErrObject)?
Avatar billede martin_moth Mester
25. november 2002 - 11:02 #8
Hmmm - det ved jeg sgu ikke... Jeg så bare der var et objError...

For at vende tilbage: Du spørger om der er en fordel i at lægge fejlbehandlingen i en selvstændig sub, og til det svarer jeg, at det ikke er en fordel, hvis den kode der ligger i fejlbehandlingen kun bliver brugt i loadPulse - bliver den brugt andre steder, er det naturligvis en fordel.

Desværre kan jeg ikke hjælpe med hvad du skal indsætte som objError - det ville ellers være smart, da du så slipper for at sende en hel masse strenge som parametre.

Måske et nyt spørgsmål:
Kan man ved On Error sende fejlen som et objError til en anden sub?
Avatar billede jrl0469 Nybegynder
25. november 2002 - 11:03 #9
Det ku' jeg osse li' at vide...
Avatar billede cole Nybegynder
01. december 2002 - 12:06 #10
Jeg bruger denne form for fejl behandling således at alle kendte fejl bliver behandlet på stedet og ukendte fejl bliver behandlet i sub rutinen UkendtFejl. På den måde ved jeg altid hvor præsist fejlen opstår.


exit sub
On Error GoTo Fejl

  'Programkoder
Fejl:
  Select case Err.Number
    Case 13
      MsgBox "Ikke et gyldigt tal"
    Case Else
        UkendtFejl ("Fejl i form navn  procedure navn")
      Close
      Exit Sub
  End Select

Public Sub UkendtFejl(Fejlsted As String)
    'Beskriver evt. opsnappede fejl og beskriver fejlen
    MsgBox Fejlsted & vbCrLf & Err.Number & ": " & _
          Err.Description, vbExclamation
End Sub
Avatar billede cole Nybegynder
01. december 2002 - 12:09 #11
Jeg lavede en lille fejl i Exit sub her står den det rigtige sted

Jeg bruger denne form for fejl behandling således at alle kendte fejl bliver behandlet på stedet og ukendte fejl bliver behandlet i sub rutinen UkendtFejl. På den måde ved jeg altid hvor præsist fejlen opstår.



On Error GoTo Fejl

  'Programkoder

exit sub
Fejl:
  Select case Err.Number
    Case 13
      MsgBox "Ikke et gyldigt tal"
    Case Else
        UkendtFejl ("Fejl i form navn  procedure navn")
      Close
      Exit Sub
  End Select

Public Sub UkendtFejl(Fejlsted As String)
    'Beskriver evt. opsnappede fejl og beskriver fejlen
    MsgBox Fejlsted & vbCrLf & Err.Number & ": " & _
          Err.Description, vbExclamation
End Sub
Avatar billede jrl0469 Nybegynder
04. december 2002 - 13:58 #12
Ok cole, med nogle tilpasninger synes din løsning at være anvendelig...
Tak for det
Jan
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester