Exceptions: Try Block bei Fehler dennoch komplett prüfen

X-Color

Erfahrenes Mitglied
Hallo,
ich möchte gerne das wenn in einem Try-Block eine Ausnahme geworfen wird, dennoch die noch folgenden Einträge ausgeführt und werden.

folgendes Beispiel:
Code:
	$validator = new Validator;
	$email = 'Mx';
	$passwort = '123';

	try {
		$validator->hatEmailRichtigeLaenge($email);
		$validator->hatPasswortMinimaleLaenge($passwort);
	} catch (Exception $e) {
		print $e->getMessage();
		exit();
	}
Die Klasse:
Code:
class Validator {
		function hatEmailRichtigeLaenge($email) {
			if ((strlen($email) != 22)) {
				throw new Exception('Ihre eingetragene eMail muss 22 Zeichen lang sein');
			}
		}
		function hatPasswortMinimaleLaenge($passwort) {
			if ((strlen($passwort) < 6)) {
				throw new Exception('Ihr eingetragenes Passwort muss mind. 5 Zeichen lang sein');
			}
		}
}

Es sollte so bei beiden eine Ausnahme geworfen werden, wie kann ich das erreichen?

Danke für eure Hilfe,
gruß X-Color
 
In dem du die Exception nicht sofort wirfst, sondern erst wenn du darauf vorbereitet bist. Du könntest es so machen:

Erstelle in deiner Klasse Validator eine Property $errors vom Typ array. Immer wenn ein Fehler aufgetreten ist (Passwort zu kurz, Email-Adresse nicht ok...) "merkt" sich das Validator-Objekt den Fehler , in dem er in die Objekt-Property $errors geschrieben wird.

Du erstellst außerdem eine Methode "valid()", welche bool zurück liefert. Die Methode könnte so aussehen:

PHP:
public function valid()
{
  if(count($this->errors) > 0) {
    throw new Exception($this->errors[0]['message']);
    return false;
  }

  return true;
}

Grüße
 
Zurück