[VB6] error handling achteraf inbouwen

Pagina: 1
Acties:

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 09-04 16:10
Ik heb een - inmiddels vrij uitgebreid - programma, geschreven in Visual Basic 6, in een zaak lopen. Zo af en toe treed er eens een fout op, en dan kan ik natuurlijk weer een paar uurtjes gaan zoeken.
Nu ben ik gaan zoeken naar een methode die ervoor zou kunnen zorgen dat ik bij het optreden van een fout een soort callstack kan krijgen, waardoor ik de fout snel kan isoleren. Op het internet vind ik als enige manier om error handling in te bouwen de 'On Error ...' methode. Hier zou ik op zich wel fouten mee af kunnen vangen, maar dan zou ik elke functie om moeten gaan bouwen (en daar heb ik uiteraard geen zin in). Mijn vraag is dan ook of er geen geavanceerdere methode is om toch enigszins informatieve waarde uit een foutmelding te kunnen krijgen, voor mijn part met een programmaatje dat met mijn programma meedraait en de boel in de gaten houdt. Bestaat er zoiets?

In andere elegante oplossingen ben ik uiteraard ook geinteresseerd.

  • Twee Dee
  • Registratie: Juli 2002
  • Laatst online: 00:24

Twee Dee

Morgen weer een ondertitel.

Heb je al eens Tools->Options->Tab "general"->"Break on all errors" aangevinkt?

Als je dan je programma uit je IDE draait dan stop je precies op de regel waar de fout optreedt. Het werkt uiteraard niet voor je gecompileerde project, deze zal netjes crashen bij een fout (als je dus geen goede foutafhandeling hebt).

Als je echt een soort generieke foutafhandeling wilt hebben zal je dat gewoon in elke sub zelf moeten inbouwen, daar zijn naar mijn weten geen alternatieven voor.

Luister nou gewoon naar me, dat voorkomt dat ik later "zie je wel" moet zeggen.


Verwijderd

Je bent iet verplicht om de ON error ... methode in elke functie in te bakken.

als je ongeveer weet in welke modules en / of functies de fout zou kunnen zitten moet je enkel daar een errorhandling voor schrijven. Welke functies dit zijn, kun je te weten komen door te aan de mensen te vragen die de fout hebben gekregen, te vragen waar ze precies mee bezig waren of ze het scherm (met foutmelding en al) kunnen laten staan, zodat je zelf kunt komen kijken,...


een andere mogelijkheid is om een standaard errorhandler te schrijven die,
alvorens de foutmelding weer te geven de foutgegevens (errormessage, errornumber,...) naam van de functie ed... naar een tekstbestand op de HD dumpt.
Met Copy-Paste valt deze errorhandler vrij snel overal tussen te plaatsen

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Exception handling is de basis van een robuust programma en hoort niet 'achteraf' ingebouwd te worden.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
farlane schreef op 20 september 2004 @ 09:16:
Exception handling is de basis van een robuust programma en hoort niet 'achteraf' ingebouwd te worden.
offtopic:
Dat is achteraf makkelijk gezegd, maar daar heeft de TS nu niks aan ;) Neemt niet weg dat ik het helemaal met je eens ben.


Wat je kunt doen is een public string var (myStatusVar ofzo) maken waarin je per "belangrijk stuk code" bij houdt wat je aan 't doen bent. Vervolgens gooi je in je subs/functies een on error goto myErrhandler en daarin roep je dan weer een generieke functie LogError(myStatusVar) aan die je error naar een logfile (append!) dumpt en een nette melding op je scherm geeft. Zoals aangegeven is dit relatief makkelijk met wat copy/paste werk in te bouwen. Echt makkelijker kun je het niet maken.

[ Voor 10% gewijzigd door RobIII op 20-09-2004 10:18 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

eeuh ik heb een tijdje geleden alweer (1999 of zo ? :? ) iets soortgelijks gehad. TOen heb ik met VBE (VB extension om in de ide dingen te automatiseren) code geschreven .. om onder andere error afhandelings code in functies (ik weet niet meer het aantal.. maar het lag zo bij de 100) te zetten (aan het begin weliswaar.. ik gebruikte toen zoiets als "on error goto hell" aan het einde van de functie "Exit function hell: WriteInErrorlog(err, err.description, "Functienaam"). Dat kun je nog verder specificeren door overal nummers voor code te zetten.. Heb ik ook weer met vbe opgelost.. Is wel wat werk maar dan heb je ook wat.

[ Voor 4% gewijzigd door henkleerssen op 20-09-2004 10:23 ]


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Ik weet niet hoe groot je project is. Maar ik zou zoals henkleerssen ook doet, eerst een globale error codes aanmaken en loggen maken.

Daarna de prioriteit bekijken van bepaalde methods die errors kunnen gooien en adhv de prioriteit de errors gaan handelen.
Is je project niet te groot, moet je gewoon alles in 1x pakken vind ik.
Pagina: 1