try catch
ik heb het volgende:
Momenteel krijg ik enkel de fout van email terug als ik beide velden fout invul, en dit is uiteraard niet de bedoeling.
Is het mogelijk om dit met 1 try catch te doen? of moet ik voor elke validatie een aparte try catch maken?
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
try{
$check->validate('email', $_POST['email']);
$check->validate('url', $_POST['url']);
}
catch(Exception $e){
echo $e->getMessage();
}
?>
try{
$check->validate('email', $_POST['email']);
$check->validate('url', $_POST['url']);
}
catch(Exception $e){
echo $e->getMessage();
}
?>
Momenteel krijg ik enkel de fout van email terug als ik beide velden fout invul, en dit is uiteraard niet de bedoeling.
Is het mogelijk om dit met 1 try catch te doen? of moet ik voor elke validatie een aparte try catch maken?
Gewijzigd op 01/01/1970 01:00:00 door Mr.Moe
Gesponsorde koppelingen:
Zodra er in een try blok een exception gegooid wordt, wordt de uitvoer direct gestopt en wordt er verder gegaan met het catch gedeelte.
Wat je bijvoorbeeld zou kunnen doen is de validate() method geen exception laten gooien maar in plaats daarvan een foutmelding laten toevoegen aan een member $aErrors. Na al je controles zou je dan een method checkErrors() aan kunnen roepen die een exception gooit zodra $aErrors niet leeg is. Als je laatste zou je dan in je catch blok een method getErrors() aan kunnen roepen waarmee je alle foutmeldingen ophaalt en die vervolgens verwerkt.
Wat je bijvoorbeeld zou kunnen doen is de validate() method geen exception laten gooien maar in plaats daarvan een foutmelding laten toevoegen aan een member $aErrors. Na al je controles zou je dan een method checkErrors() aan kunnen roepen die een exception gooit zodra $aErrors niet leeg is. Als je laatste zou je dan in je catch blok een method getErrors() aan kunnen roepen waarmee je alle foutmeldingen ophaalt en die vervolgens verwerkt.
merci, ik zal het zo eens proberen.
Persoonlijk vind ik het gebruik van exceptions in dit specifieke geval niet nodig. Als validate() false teruggeeft, zou je simpel getErrors() kunnen aanroepen om de gegenereerde foutmeldingen weer te geven.
Hiermee kan je bijvoorbeeld ook iets afkeuren zonder een foutmelding te geven (misschien niet logisch, maar het kan wel).
EDIT: na nog een keer lezen gaat dit hier niet werken. Voor de bovenstaande oplossing zal je iets met het Observer pattern moeten doen.
Hiermee kan je bijvoorbeeld ook iets afkeuren zonder een foutmelding te geven (misschien niet logisch, maar het kan wel).
EDIT: na nog een keer lezen gaat dit hier niet werken. Voor de bovenstaande oplossing zal je iets met het Observer pattern moeten doen.
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP



