[Delphi] Eigen component: exceptions of event

Pagina: 1
Acties:

  • Yohost!
  • Registratie: Juni 2000
  • Laatst online: 05-09 15:34
Je bent bezig met een eigen component in Delphi. Nou kan het natuurlijk gebeuren dat er een fout (exception) optreed ergens in je code binnen het component. Wat is dan slimmer/beter: een event maken die dit soort fouten door geeft, of eigen exception laten raisen? Of misschien een combinatie van beide?

Wat is jullie idee hierover, of eventueel ervaringen.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 04-09 10:21

mulder

ik spuug op het trottoir

Liever een error raisen, op het moment dat een component/class/module/whatever een error afvangt weet jou applicatie dit niet. Je applicatie gaat dus lekker verder terwijl er dus een error heeft plaatsgevonden, je flow klopt dus niet terwijl je app denkt van wel.

oogjes open, snaveltjes dicht


  • Yohost!
  • Registratie: Juni 2000
  • Laatst online: 05-09 15:34
Da's idd een goede, is eigenlijk al genoeg om toch maar voor exceptions te gaan. Thanks.

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 01:20

Delphi32

Heading for the gates of Eden

Hangt ervan af wat voor fout het is.
Ongeldige situaties binnen je component MOET je m.i. afvangen met een exception. Je gebruiker kan die immers niet verwachten en er dus ook niet op anticiperen.

Er zijn echter een heleboel dingen die fout kunnen gaan maar die niet aan je component te wijten zijn. Een mooi voorbeeld hier zijn de dataset componenten. Stel je gaat een record posten maar een van de velden blijkt een ongeldige waarde te bevatten waardoor de .Post niet doorgaat. Dat handel je netjes af binnen je component, maar je stelt voor deze situatie toch zeker een event beschikbaar voor de gebruiker. Die moet toch de kans hebben om de situatie te herstellen.

Gaat de .Post niet door omdat om de een of andere vage reden er pointers in je component verkeerde adressen benaderen dan raise je een exception.

  • Yohost!
  • Registratie: Juni 2000
  • Laatst online: 05-09 15:34
Dus als ik het goed heb:

De gebruiker voert een method uit van een component, gaat het hier ergens fout: exception.

De gebruiker moet een mogelijkheid hebben een fout te kunnen verbeteren: exception.

Er treedt 'gewoon' een fout op in het component (door een timer ofzo). Deze fout is niet ontstaan doordat de gebruiker een method uitvoerde: OnErrorEvent (?)


Is het verder gebruikelijk om een Exception.Create te doen, of is het makkelijker eigen exception classes te maken?

Verwijderd

In de delphi help staat uitgelegd wanneer je exceptions moet gebruiken: Zoek op 'exceptions' en dan 'When to use exceptions'.

Hierin staat oa dat je exceptions niet moet overgebruiken:
Exception handling is appropriate for errors whose chances of occurring are low or difficult to assess, but whose consequences are likely to be catastrophic.
Dit zie je bv als je een TList hebt met 4 items en je doet List[100] := Iets; ofzo.

In andere gevallen zou je bv een functie kunnen gebruiken die True of False geeft.

Je maakt een nieuwe Exception class aan, om meer gegevens in die exception te stoppen, of om de gebruiker er makkelijk op te laten filteren:
code:
1
2
3
4
5
  try
    DoeIets;
  except 
    On EMyException do ShowMessage('Foutje');
  end;
Pagina: 1