Спустя 44 минуты, 13 секунд (19.08.2012 - 17:16) alexbel2404 написал(а):
Если я правильно понял, то:
В catch будут попадать ошибки сгенерированные только MySQLiException
P.S. Код сделан для примера )
class MySQLiException extends Exception {}
function connectDB() {
$db = new mysqli();
$db->connect('host', 'user', 'password', 'database');
if ($db->connect_errno) {
throw new MySQLiException('Не удалось подключиться к базе данных');
} else {
return $db;
}
}
try {
$db = connectDB();
} catch (MySQLiException $ex) {
echo $ex->getMessage();
}
В catch будут попадать ошибки сгенерированные только MySQLiException
P.S. Код сделан для примера )
Спустя 1 минута, 59 секунд (19.08.2012 - 17:17) alexbel2404 написал(а):
http://php.net/manual/ru/language.exceptions.extending.php тут можно почитать
Спустя 1 час, 51 минута, 25 секунд (19.08.2012 - 19:09) try catch написал(а):
Цитата |
class MySQLiException extends Exception {} |
что за класс Exception???
Спустя 6 минут, 35 секунд (19.08.2012 - 19:15) Игорь_Vasinsky написал(а):
<?php
class Exception
{
protected $message = 'Unknown exception'; // Сообшение
private $string; // Свойство для __toString
protected $code = 0; // Код исключения,
// определяемый пользователем
protected $file; // Файл в котором было
// выброшено исключение
protected $line; // Строка в которой было
// выброшено исключение
private $trace; // Трассировка вызовов методов и функций
private $previous; // Предыдущее исключение, для
// вложенных блоков try
public function __construct($message = null, $code = 0, Exception $previous = null);
final private function __clone(); // Запрещает клонировать исключения
final public function getMessage(); // Возвращает сообшение исключения
final public function getCode(); // Код исключения
final public function getFile(); // Файл, где выброшено исключение
final public function getLine(); // Строка, выбросившая исключени
final public function getTrace(); // Массив backtrace()
final public function getTraceAsString(); // Трассировка вызовов как строка
/* Переопределяемое */
public function __toString(); // форматированная строка для отображения
}
?>
Спустя 10 минут, 22 секунды (19.08.2012 - 19:26) try catch написал(а):
Игорь_Vasinsky незаметил. А создание тупо читсого класса MySQLiException не мешает этике ООП?
Спустя 3 минуты, 16 секунд (19.08.2012 - 19:29) Игорь_Vasinsky написал(а):
не вкурсе) я процедурный стиль практикую.
Спустя 1 минута, 14 секунд (19.08.2012 - 19:30) m4a1fox написал(а):
try catch
Нет! Не мешает! Можешь создавать свои собственные классы исключения.
Нет! Не мешает! Можешь создавать свои собственные классы исключения.
Спустя 45 минут, 15 секунд (19.08.2012 - 20:16) Guest написал(а):
Цитата |
А создание тупо читсого класса MySQLiException не мешает этике ООП? |
Наоборот, типизирует. В результате с помощью разных типов исключений по разносу проводить логику обработки
try
{
...
}
catch(DBException $e)
{
log($e->getMessage());
}
catch(NotFoundItemException $e)
{
echo "Not found item for " . $e->getMessage();
}