Goedemorgen!

Ik ben even benieuwd naar jullie mening wanneer je een try/catch of simpelweg echo gebruikt.

De situatie is al volgt:
controller/action roept de send method van een mailservice aan. Ergens in dat object kan een exception worden teruggegeven. Handel ik deze in de mailservice af en retourneer ik false terug naar de controller/action of plaats ik de try/catch in de controller/action met een echo 'Fout tijdens verzenden. (o.i.d)';

De situatie is niet moeilijker dan dit. Er zijn geen onderdelen afhankelijk van de uitkomst van de verzending van de mail.
Wie krijgt de melding te zien?

Een ontwikkelaar: deze heeft wellicht iets aan een infodump/trace.

Een eindgebruiker: krijgt deze enkel dit bericht te zien of een nette algemene / specifieke foutmeldingspagina met HTTP 500 status code?

Het try-catch mechanisme stelt je in staat om dit soort beslissingen niet direct te nemen maar deze te delegeren. Wat je direct zou kunnen doen is het loggen van de fout en vervolgens zou je een nieuwe exception kunnen throwen naar een hogere laag in je applicatie. Je hoeft een exception niet per se dan en daar af te handelen. Je kunt deze ook doorgeven. Het hangt er dus ook een beetje van af hoe je applicatie verder in elkaar zit.

Ik zou er in ieder geval meer mee doen dan simpelweg echo'en. Er is iets out-of-the-ordinary gebeurd, dit zou, vooral als dit vaker voorkomt, nader bestudeerd moeten worden omdat dit mogelijk kan duiden op een programmeer- of configuratiefout of het falen van een (extern) onderdeel waar je gebruik van maakt. Dit zijn de "rookmelders" in je applicatie, maak hier gebruik van.
Hey Thomas!

Het is een melding die naar de eindgebruiker gaat. Via een 'flashmessenger' wordt er keurig een bericht weergegeven dat de verzending mislukt is.

De exception wordt gegeven door de programmeur waneer de mail niet verzonden kan worden. Er wordt in het catch gedeelte niks extra's gedaan buiten het aanroepen van de flashmessenger plugin. In dit geval ben ik van mening dat je aan de hand van de uitkomst "true/false" beter gewoon met een simpele echo voort kunt.

Ik ben het met je eens dat je een eventuele exception netjes via try/catch moet afhandelen, maar in de situatie die ik hierboven schets is het naar mijn idee niet de plek? Wat is jouw mening?

Gr,

Erik
Dit hangt van het type exception af. Een logic exception duidt op een bug die een developer moet fixen: "Exception that represents error in the program logic. This kind of exception should lead directly to a fix in your code." Een runtime exception kan echter duiden op een te verwachten probleem bij de uitvoering, bijvoorbeeld een mailserver die down is. In dat opzicht zijn exceptions letterlijk uitzonderingen voor eventuele problemen die nooit helemaal uit te sluiten zijn.

Ik zou waar mogelijk exceptions gebruiken, alleen al omdat je uit een enkele true/false nooit de aard van de fout kunt afleiden.

Reageren