Не пойму как использовать exception :-(

vlad275

Новичок
Не пойму как использовать exception :-(

Пишу фрагмент кода:
PHP:
try {
$c=mysql_connect("localhost","root","");
if (!$c) throw new Exception("connect");

}
catch (Exception $e) {
show_error_page();
}
Несмотря на ошибку в пароле никакого сообщения не выводится. Как нужно переделать код?
 

Beavis

Banned
а если просто написать
PHP:
show_error_page();
сообщение выводится?=)
 

vlad275

Новичок
Нет.
Нужно заменить show_error_page(); на echo "$e"; ?

А чтобы отлавливать exception дальше нужно так делать?

try {
$c=mysql_connect("localhost","root","");
if (!$c) throw new Exception("connect");
}
catch (Exception $e) {
echo "$e";
}

try {
mysql_select_db("db1");
$result = mysql_query($sql);
if (!$r) throw new Exception("query");
}
catch (Exception $e) {
echo "$e";
}
 

AmdY

Пью пиво
Команда форума
http://www.php.net/manual/ru/exception.getmessage.php
хотя у тебя ошибка не в этом. включи вывод ошибок на экран.

try служит для отлавливания исключений, а в твоём случае генерируется ошибка типа E_WARNING, но вывод ошибок у тебя не включён
 

Духовность™

Продвинутый новичок
Исключения нужны не для отлавливания системных ошибок в чистом виде. Исключения ты сам кидаешь, если возникла ошибка. Т.е. ты сначала должен сам распознать ошибку, кинуть исключение и поймать его выше.

PHP:
try
{
    // Распознаем ошибку.
    if (!$c = @mysql_connect("localhost", "root", "ляляля"))
    {
        throw new Exception('Ошибка подключения к СУБД.');
    }
}
catch (Exception $e)
{
    echo 'Возникла ошибка: '.$e->getMessage();
}
-~{}~ 03.12.08 12:47:

кстати, я пока ООП-говнокод не начал писать, так до этого и не понимал нафига нужны эти исключения.... :)
 

Krishna

Продался Java
А если будешь использовать PDO вместо устаревшей mysql_, то даже кидать не надо будет - оно будет само это делать.
 

AmdY

Пью пиво
Команда форума
да, это ООП надстройка над mysql_
 

vlad275

Новичок
Не подскажите, что обозначает этот оператор "=&" ?
Приравнять при каком-то условии?
 

vlad275

Новичок
Понял так, приравнивание и блокировка. То есть константа?
 

vlad275

Новичок
На основании http://ru2.php.net/manual/ru/language.references.php
Может я неправильно понял английские слова

-~{}~ 04.12.08 11:15:

=& -ссылка ?
 

Zetruger

ivan.chistyakov.name
>> Не подскажите, что обозначает этот оператор "=&" ?
Приравнять при каком-то условии?

http://ru2.php.net/manual/ru/language.references.whatdo.php

$a = 1;
$b = 2;

$a - переменная указывает на область памяти А
область памяти А содержит значение 1
счетчик указателей на область паяти А = 1

$b - переменная указывает на область памяти B
область памяти B содержит значение 2
счетчик указателей на область паяти B = 1

$b = &$a;

здесь не большое лирическое отступление
или почему важно красиво писать код

$b = &$a; И $b =& $a;
одно и тоже, только первый ИМХО правильный вариант
сразу наталкивает обывателя который впервые видит такую
мудрую конструкцию на мысли в правильном направление,
а второй вариант сбивает и запутывает
сразу появляются бредовые мыли - типа что это за оператор =&

так вот
после $b = &$a;

$b - переменная указывает на область памяти А
область памяти А содержит значение 1
счетчик указателей на область паяти А = 2

в отличии от $b = $a;

$b - переменная указывает на область памяти B
область памяти B содержит значение 1
(значение было скопировано из области памяти А)
счетчик указателей на область паяти B = 1

счетчик указателей нужен, чтобы PHP знал нужноли физический освобождать память после unlink($b); например

ЗЫ это конечно все условно, как это реально работает в PHP я без понятия, есть еще такие фишки как copy on change
 

Духовность™

Продвинутый новичок
vlad275
ваапще то я тебе её дал. Там комментарии на английском, но про ссылки там всё разжеванно на русском, с примерами.
 
Сверху