PHP/Development/Exceptions — различия между версиями

Материал из Web эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Версия 10:37, 26 мая 2010

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