[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: try catch
try catch
Я хотел бы узнать про конструкцию try catch/ В нете я прочитал что в try пишется код который выполняется если ошибок нет, а в catch вывод ошибки. мне хотелось бы узнать как определить какая ошибка вышла и как ее вывести. и мне сказали что catch может быть много - как это возможно?



Спустя 44 минуты, 13 секунд (19.08.2012 - 17:16) alexbel2404 написал(а):
Если я правильно понял, то:

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 написал(а):

Спустя 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();
}
Быстрый ответ:

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