PHP/Development/Exceptions
Версия от 13:37, 26 мая 2010; (обсуждение)
Catch database connection exception
<source lang="html4strict">
<?php
try { $conn = mysql_connect("localhost","username","password"); if (! $conn) { throw new Exception("Could not connect!"); } } catch (Exception $e) { echo "Error (File: ".getFile().", line ".$e->getLine()."): ".$e->getMessage(); }
?>
</source>
Define your own exception class
<source lang="html4strict">
<?php
class InvalidEmailException extends Exception { function __construct($message, $email) { $this->message = $message; $this->notifyAdmin($email); } private function notifyAdmin($email) { mail("admin@yourdomain.ru","INVALID EMAIL",$email,"From:web@example.ru"); } } class subscribe { function validateEmail($email) { try { if ($email == "") { throw new Exception("You must enter an e-mail address!"); } else { list($user,$domain) = explode("@", $email); if (! checkdnsrr($domain, "MX")) { throw new InvalidEmailException("Invalid e-mail address!", $email); } else { return 1; } } } catch (Exception $e) { echo $e->getMessage(); } catch (InvalidEmailException $e) { echo $e->getMessage(); } } function subscribeUser() { echo $this->email." added to the database!"; } } $_POST["email"] = "someuser@example.ru"; if (isset($_POST["email"])) { $subscribe = new subscribe(); if($subscribe->validateEmail($_POST["email"])) $subscribe->subscribeUser($_POST["email"]); }
?>
</source>