PHP/Development/Exceptions
Catch database connection exception
<?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();
}
?>
Define your own exception class
<?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"]);
}
?>