2013-09-19 4 views
0

Я разрабатываю собственный веб-сайт, который вычисляет определенные значения. Мне нужно показать пользователям, что ошибки ушли от вычисления простым сообщением, а не ошибкой PHP. Я также изучаю исключение бросания в PHP Является ли это хорошим способом перебросить исключение в этом случае?Re-throw исключение в PHP

+0

надлежащее тестирование перед рукой = нет ошибок :-), конечно, вы можете просто зарегистрировать их и не отображать. или использовать собственный обработчик ошибок. –

+1

Если вы пытаетесь найти в google, вы можете получить некоторую ценную информацию. – Pitchinnate

+0

Вы прочитали [руководство] (http://php.net/manual/en/language.exceptions.php)? – Jon

ответ

1

Да, это возможно, и это хороший способ.

Вот пример из W3schools.com объяснил

<?php 
class customException extends Exception 
    { 
    public function errorMessage() 
    { 
    //error message 
    $errorMsg = $this->getMessage().' is not a valid E-Mail address.'; 
    return $errorMsg; 
    } 
    } 

$email = "[email protected]"; 

try 
    { 
    try 
    { 
    //check for "example" in mail address 
    if(strpos($email, "example") !== FALSE) 
     { 
     //throw exception if email is not valid 
     throw new Exception($email); 
     } 
    } 
    catch(Exception $e) 
    { 
    //re-throw exception 
    throw new customException($email); 
    } 
    } 

catch (customException $e) 
    { 
    //display custom message 
    echo $e->errorMessage(); 
    } 
    ?> 

Пример: Код выше тестов, если электронная почта-адрес содержит строку «пример» в нем, если это произойдет, исключение повторно throw:

  1. Класс customException() создается как расширение старого класса исключений. Таким образом, он наследует все методы и свойства из старого класса исключений
  2. Создана функция errorMessage(). Эта функция возвращает сообщение об ошибке, если адрес электронной почты недействителен.
  3. В переменной $ email задана строка, которая является допустимым адресом электронной почты, но содержит строку «пример»
  4. Блок «try» содержит еще один блок «try», чтобы сделать возможным повторное выброс исключения
  5. Исключение инициируется, так как электронное письмо содержит строку «пример»
  6. Блок «catch» ловит исключение и повторно выбрасывает "customException"
  7. "customException" обнаружено и отображается сообщение об ошибке

Если исключение не попало в его текущий блок «try», он будет искать блок catch на «более высоких уровнях».

+3

ничего не следует из W3schools.com –

Смежные вопросы