login  Naam:   Wachtwoord: 
Registreer je!
 Forum

try-catch-probleem (Opgelost)

Offline Raze - 13/09/2009 11:00
Avatar van RazePHP beginner Hallo,

ik heb de volgende (vereenvoudigde) code:

  1. class beveiliging {
  2.  
  3. public static authenticatie ($userid) {
  4.  
  5. try {
  6.  
  7. if(!is_numeric($userid) {
  8.  
  9. throw new Exception ('Het userid is niet numeriek');
  10. }
  11. }
  12.  
  13. catch (Exception $e) {
  14. echo $e->getMessage();
  15. }
  16.  
  17. echo $userid;
  18.  
  19. }
  20. }


wat ik nu wil is dat wanneer het userid niet numeriek is, deze ook niet geecho'ed wordt. Dit gebeurt nu wel, ook al is het userid niet numeriek. Wanneer dit het geval is, wordt de foutmelding weergegeven, en dat het userid.

Ik wil dus dat de code stopt van zodra er exceptions worden onderschept.

Iemand een idee?

6 antwoorden

Gesponsorde links
Offline Koen - 13/09/2009 11:04
Avatar van Koen PHP expert De code stopt sowieso bij een exception. En haal die try-catch uit je class, daar is het niet voor gemaakt!
Offline Raze - 13/09/2009 11:11 (laatste wijziging 13/09/2009 11:11)
Avatar van Raze PHP beginner qué? heb toch al dikwijls try-catch methodes in een functie gezien, o.a. op de php.net-pagina

waarom hoort het dan niet in een class??
Offline Rik - 13/09/2009 11:14
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Het idee van try-catch is dat je bij een fout stopt en op een (willekeurig) ander niveau in je code (buiten de class, waar je de functie aanroept bijvoorbeeld) de foutmelding verder afhandelt:
  1. class beveiliging {
  2. public static function authenticatie($userid) {
  3. if(!is_numeric($userid)) {
  4. throw new Exception ('Het userid is niet numeriek');
  5. }
  6. echo $userid;
  7. // ... verder met authenticatie
  8. }
  9. }
  10.  
  11.  
  12. try {
  13. beveiliging::authenticatie('abc');
  14. } catch (Exception $e) {
  15. echo 'Fout: ' . $e->getMessage();
  16. }
Offline Raze - 13/09/2009 11:16
Avatar van Raze PHP beginner @rik: ok ik snap het, je hebt idd gelijk (jij ook koen, sorry  )

één klein vraagje nog: ivm de klasse: indien er dus een uitzondering gegooid wordt (lijn 4 in de code van rik), dan stop de code toch, niet?
Offline marten - 13/09/2009 11:23
Avatar van marten Beheerder die kan je toch afvangen? en dan een exit(); doen
Offline Raze - 13/09/2009 11:27
Avatar van Raze PHP beginner @marten: exit() is blijkbaar niet nodig, code stopt.

Bedankt iedereen!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.205s