Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Философия обработок ошибок PHP / 21 сообщений из 21, страница 1 из 1
24.01.2005, 11:50
    #32879615
oracle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
Господа, что то не могу найти как правильно тут обрабатывать ошибки, нет что то тут конструкций

try


except


finally

Подскжите плз, как тут это все происходит

O*R*A*C*L*E
(Don't despair my little fried...)
...
Рейтинг: 0 / 0
24.01.2005, 12:07
    #32879662
sky2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
...
Рейтинг: 0 / 0
24.01.2005, 12:25
    #32879723
Hup
Hup
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
Там все просто до безобразия =)
В РНР еще не работал с этим плотно, но очень похоже на C#

Типичный пример(деление на ноль!)
При делении на ноль веполнение программы останавливается и с жуткими матами прога падает.

Код: plaintext
1.
2.
3.
4.
5.
6.
int n =  100 ;
int i;
for(i = - 10 ; i <=  10 ; i++)
{
   int j = n / i; // когда i ==  0  проге прийдет хана
}

Можно легко подобное исправить =)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
try{
   int n =  100 ;
   int i;
   for(i = - 10 ; i <=  10 ; i++)
   {
      int j = n / i; // когда i ==  0  возникнет исключение пита Division by Zero
   }
}
catch(Exception ex) // ловим все исключения без разбору, но можно и выборочно 
{WriteLine("Было деление на ноль, выполнение программы будет продолжаться далее");}

Вот и весь фокус... Очень интересно работать с БД...

--
Хочешь избежать критики – ничего не делай, ничего не говори и будь никем.
...
Рейтинг: 0 / 0
24.01.2005, 12:32
    #32879745
oracle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
HupТам все просто до безобразия =)
В РНР еще не работал с этим плотно, но очень похоже на C#

Типичный пример(деление на ноль!)
При делении на ноль веполнение программы останавливается и с жуткими матами прога падает.

Код: plaintext
1.
2.
3.
4.
5.
6.
int n =  100 ;
int i;
for(i = - 10 ; i <=  10 ; i++)
{
   int j = n / i; // когда i ==  0  проге прийдет хана
}

Можно легко подобное исправить =)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
try{
   int n =  100 ;
   int i;
   for(i = - 10 ; i <=  10 ; i++)
   {
      int j = n / i; // когда i ==  0  возникнет исключение пита Division by Zero
   }
}
catch(Exception ex) // ловим все исключения без разбору, но можно и выборочно 
{WriteLine("Было деление на ноль, выполнение программы будет продолжаться далее");}

Вот и весь фокус... Очень интересно работать с БД...

--
Хочешь избежать критики – ничего не делай, ничего не говори и будь никем.

Вообще не понятно к чему ты это все...
...
Рейтинг: 0 / 0
24.01.2005, 12:52
    #32879822
Hup
Hup
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
топик называется как?
Oracle
Философия обработок ошибок PHP

Отмечу слово: Философия
Прежде чем програмить, нужно сначала разобраться чего ты хочешь добиться и что это тебе даст. Я просто показал один пример, который решает довольно деликатную проблемму.

--
Хочешь избежать критики – ничего не делай, ничего не говори и будь никем.
...
Рейтинг: 0 / 0
24.01.2005, 13:04
    #32879864
oracle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
А это вообще для какого языка программирования, для PHP он же не покатит.

O*R*A*C*L*E
(Don't despair my little fried...)
...
Рейтинг: 0 / 0
24.01.2005, 13:07
    #32879872
sky2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
while (true) {
read(http://docs.php.net/en/language.exceptions.html);
}

--
http://jcatki.no-ip.org/c++/bart.jpg
...
Рейтинг: 0 / 0
24.01.2005, 15:08
    #32880288
oracle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
<html>

<head>
<title></title>
</head>

<body>

<?php

try {
$error = 'Always throw this error';
throw new Exception($error);

// Code following an exception is not executed.
echo 'Never executed';

} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}

// Continue execution
echo 'Hello World';
?>

</body>

</html>


результат


Parse error: parse error in D:\Program Files\PHP Expert Editor\php109.tmp on line 11


O*R*A*C*L*E
(Don't despair my little fried...)
...
Рейтинг: 0 / 0
24.01.2005, 15:10
    #32880294
oracle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
for PHP 4


O*R*A*C*L*E

(Don't despair my little fried...)
...
Рейтинг: 0 / 0
24.01.2005, 15:15
    #32880314
sky2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
сорри в ссылках я опечатался хотя вы бы могли и сами заметить когда зашли
php5 http://docs.php.net/en/language.exceptions.html
php4/5 http://docs.php.net/en/ref.errorfunc.html

exception появились тока с php5
у вас видимо php4
...
Рейтинг: 0 / 0
24.01.2005, 15:19
    #32880322
oracle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
В том то и дело, про эту конструкцию я как бы знал, она стандартна для всех языков, а вот тут другой подход совершенно, и сколько не читаю не могу въехать.

O*R*A*C*L*E
(Don't despair my little fried...)
...
Рейтинг: 0 / 0
24.01.2005, 15:53
    #32880453
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
приведи пример кода с ошибкой (без обработчиков ошибок, без исключений) и на словах объясни, как ты хочешь обработать ее
...
Рейтинг: 0 / 0
24.01.2005, 15:59
    #32880469
oracle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
global $db;
$db = NewADOConnection('postgres');
$ip='localhost';
$login = $inUserName;
$pass=$inPassword;
$dbname='new_db';
$ok = $db->Connect($ip, $login, $pass, $dbname);

чтобы при невозможности коннекта, котила на другую страницу

O*R*A*C*L*E
(Don't despair my little fried...)
...
Рейтинг: 0 / 0
24.01.2005, 16:09
    #32880508
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
читай доки к adodb. Метод Connect возвращает false если не смог подключиться к СУБД.
Код: plaintext
1.
2.
if (!$ok) {
   header("Location: http://www.example.com/error.php");
}

К тому же у adodb есть свой обработчик ошибок, которій можно переписать
...
Рейтинг: 0 / 0
24.01.2005, 16:11
    #32880514
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
там после header-а еще нужен
exit;
...
Рейтинг: 0 / 0
26.01.2005, 14:41
    #32884833
oracle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
Hupтопик называется как?
Oracle
Философия обработок ошибок PHP

Отмечу слово: Философия
Прежде чем програмить, нужно сначала разобраться чего ты хочешь добиться и что это тебе даст. Я просто показал один пример, который решает довольно деликатную проблемму.

--
Хочешь избежать критики – ничего не делай, ничего не говори и будь никем.


Один вопрос, а вот твой слогон внизу, это ты сам придумал или использовал чьюто мысль?
...
Рейтинг: 0 / 0
27.01.2005, 12:08
    #32886660
Hup
Hup
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
Oracle
Нет конечно и я не претендую на оригинальность своего слогана, скажем так:
"Он мне просто понравился =)"
Между тем, ты начинаешь постепенно меня поражать своей узколобостью =(
Что за заявления?
Oracle
А это вообще для какого языка программирования, для PHP он же не покатит.

Конечно не катит... Даже ребенку(немного образованному) понятно, что в РНР не обьявляютя переменние явно(или как его там, т.е. так int i = 0;). Как там говорится: "РНР со слабо типизированним обьявлением... {или чего-то там еще}". Ты же сам просил привести основы, вот и я привел. А теперь гнешь пальцы и начинаешь ругаться... Нехорошо так поступать =( Если хочешь в своем примере круто извратнуться, то можешь сам придумать исключение типа excpDBError и вызывать его когда тебе необходимо. Ладно, что-то я сам начинаю поступать плохо... не воспринимай все в серьез, но и не пропускай мимо ушей =)))

--
Хочешь избежать критики – ничего не делай, ничего не говори и будь никем.
...
Рейтинг: 0 / 0
27.01.2005, 12:30
    #32886716
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
Hup в РНР не обьявляютя переменние явно(или как его там, т.е. так int i = 0;)
ПХП позволяет не объявлять переменные.
Но встретив такую необъявленную переменную, чесно предупреждает об этом разработчика, сгенерировав Notice.
Многие считают такой код грязным и непрофессиональным.
К тому же, необъявленнык переменные - один из источников дыр в скриптах.
...
Рейтинг: 0 / 0
27.01.2005, 13:08
    #32886846
Hup
Hup
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
Макс М. ,
я когда в первый раз увидел подобное в РНР(до этого был только С++ и C#), то просто ужаснулся... Так так, а int, а float, а string? Это просто напасть какая-то. Как-то противно начал поглядывать на РНР, но привык, хотя по возможности перепрыгиваю на C#
--
Хочешь избежать критики – ничего не делай, ничего не говори и будь никем.
...
Рейтинг: 0 / 0
27.01.2005, 14:12
    #32887080
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
HupТак так, а int, а float, а string?И что? Потому что у PHP, в отличии от всяких С++, своя область применения. И в этой области нестрогая типизация данных весьма удобна.
...
Рейтинг: 0 / 0
03.03.2005, 13:58
    #32943662
Fabrichenko Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Философия обработок ошибок PHP
Hup
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
try{
   int n =  100 ;
   int i;
   for(i = - 10 ; i <=  10 ; i++)
   {
      int j = n / i; // когда i ==  0  возникнет исключение пита Division by Zero
   }
}
catch(Exception ex) // ловим все исключения без разбору, но можно и выборочно 
{WriteLine("Было деление на ноль, выполнение программы будет продолжаться далее");}


а что на 1, 2, ... 10 делить не надо? те получил exception и все цикл не дорабатывется? странна ...
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Философия обработок ошибок PHP / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]