[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как юзать Throw?
McLotos
Добрый день. В общем озадачился использованием исключений. Не совсем понятно как это работает.
Точнее мне непонятно для чего throw
Разве нельзя обойтись try catch?
Объясните на каком-нибудь простейшем примере.

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
T1grOK
А вызывать-то исключение в try как собираетесь?

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
McLotos
T1grOK
Не совсем понял.
Ну вообще я просто хочу попробовать переписать один свой класс. Там есть несколько методов, которые отвечают за обработку ошибок.
Допустим в метод не пришла переменная, тогда вызывается метод обработки ошибок, который делает запись в лог.
Выглядит это примерно так
if(is_file($file) === TRUE)
{require $file;}
else{$this->addErrorInLog('Ошибка не найден файл');}//addErrorInLog вызывается везде где может произойти ошибка
//а эта часть вызывается 1 раз при вызове класса

if(!empty($this->error_log))
{
$this->saveErrorReports();
$this->showErrorReports();
}
}

А как например такую логику задать используя исключения?
Не совсем понятно.

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
TMake
Вариант 1:

try{
if(is_file($file) === TRUE)
{require $file;}
else{
throw new Exception('Ошибка не найден файл');
}//addErrorInLog вызывается везде где может произойти ошибка
//а эта часть вызывается 1 раз при вызове класса

if(!empty($this->error_log))
{
$this->saveErrorReports();
$this->showErrorReports();
}
}
}
catch (Exception $e) {
echo 'Ошибка: ', $e->getMessage(), "\n";
}


Вариант 2 (часто используемый):

if(is_file($file) === TRUE)
{require $file;}
else{
throw new Exception('Ошибка не найден файл');
}//addErrorInLog вызывается везде где может произойти ошибка
//а эта часть вызывается 1 раз при вызове класса

if(!empty($this->error_log))
{
$this->saveErrorReports();
$this->showErrorReports();
}
}

set_exception_handler('exception_handler');

function exception_handler($exception) {
echo "Ошибка: " , $exception->getMessage(), "\n";
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.