Avatar billede bkp Nybegynder
14. december 1999 - 09:57 Der er 9 kommentarer og
1 løsning

Fange errors, hvordan???

Jeg vil først lige sortere dem fra der vil fortælle mig at jeg kan lave en on error goto errorHandler, for det kender jeg til hudløshed.

Men jeg har nu et større projekt liggende og jeg har lavet et modul der kan rette fejl og give en bedre fejlmeddelelse, mit problem er så at jeg skal alle funktioner m.m. for at lave en on error goto... for at det virker.
Er der en der ved om man kan fange disse fejl og derved omdiregere til denne fejlfunktionsbehandler.
Jeg har fedtet lidt med callWindowProc men kan ikke få den til det, er der en der kender en smart måde?
Avatar billede brian Nybegynder
14. december 1999 - 13:16 #1
Mener du at du vil fange de forskellige fejlkoder og identificere dem udfra fejlkoden ?
F.eks. fejlkode 286 = kunne ikke etablere forbindelse til linket ?
Avatar billede tigerdyr Nybegynder
14. december 1999 - 15:38 #2
Kender kun til run-time error checking i C++ og Java, men der er der nogle simple "kodeord"... prøv at søge på try og catch i VB's online help... hvis de er der, kan du bruge det til at fange de fejl der måtte opstå...
Avatar billede bkp Nybegynder
15. december 1999 - 08:35 #3
Jeg har lavet et modul der laver en messagebox der fortæller err.number + err.description + err.source + screen.activeform + screen.activecontrol m.m.
Og derefter laver den en err.clear og går videre hvor den slap.
Jeg sorterer også enkelte fejlmeddelelser fra som jeg ikke mener er væsentlige.
Det var så meningen at alle fejl skulle sendes igennem dette modul!
Avatar billede bkp Nybegynder
15. december 1999 - 08:39 #4
Man kunne skrive:

  On error goto ErrHandler

  Sourcekoden

  Exit Sub
ErrHandler:
  Kalde modulet her

Men det synes jeg er en fancy måde, der må være en mere elegant måde, så man kan definere en alround on error goto
Avatar billede bkp Nybegynder
15. december 1999 - 18:27 #5
Jeg har lavet en foreløbig løsning der ser sådan ud:

Sub ErrHandlerStarter()
    If AlreadyStarted = True Then Exit Sub
    AlreadyStarted = True
    StopErrHandler = False
    On Error Resume Next
    Do While StopErrHandler = False
        If Err.Number > 0 Then
            StartErrHandler "" 'Kører fejlroutinen
            Err.Clear
        Else
            DoEvents
        End If
    Loop
    AlreadyStarted = False
    StopErrHandler = True
End Sub

Så skal man et givent sted aktivere denne loop ved at skrive ErrHandlerStarter og stoppe den ved at skrive StopErrHandler = True
I alle functioner m.m. skal man så bare skrive on error resume next, og loopen vil så fange fejlen for en.
Avatar billede bkp Nybegynder
15. december 1999 - 18:28 #6
Men det var nu bedre hvis det kunne gøres lidt smartere!
Avatar billede bkp Nybegynder
18. december 1999 - 23:23 #7
Den løsning jeg kom til sidst er lidt dum den optager en masse unødig resurser, hvis der er en der har en god ide hører jeg enormt meget gerne fra dig, jeg vil gerne forærre flere point hvis det kan hjælpe.
Avatar billede tck Nybegynder
06. januar 2000 - 17:22 #8
Jeg kan ikke lige udtænke en konkret løsning... men hvis du kigger i hjælpen efter WithEvents/RaiseEvent, så får du måske selv får en lys ide..?
f.eks:
a) Lav en klasse til fejlhåndtering, som du erklærer globalt, withevents.
b) Ved fejl laver du Raiseevent i din errorhandler.
...noget i den stil må kunne bringes til at virke. Men selve on-error-goto kan du næppe undgå. Dit eget forslag fra 15-12-99 08:39:50 er sådan set OK. Det er jo "kun" fejlhåndtering, hvor smart behøver det være?  ;-)
Avatar billede tdaugaard Nybegynder
03. december 2000 - 08:29 #9
så tror jeg vist det snart må være tid til at få lukket spørgsmålet!
Avatar billede bkp Nybegynder
18. august 2010 - 11:03 #10
Den går vist på krykker, så den lukker jeg lige.
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