PHP/Development/Exceptions

Материал из Web эксперт
Версия от 07:03, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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"]);
   }
?>