Помощник
|
Исключения в PHP |
romantik2011
|
Сообщение
#1
|
||
|
|
||
|
|||
Apay |
25.7.2011, 20:49;
Ответить: Apay
Сообщение
#2
|
|
проверте баланс скобок
|
|
|
romantik2011
|
Сообщение
#3
|
|
Написал так:
[PHP] <?php class A{ function __construct($n,$l,$p){ try{ if($n="" or $l="" or $p="") throw new Exception("Ошибка, один из аргументов не передан конструктору!"); echo "Имя: ",$n; echo "<br>Логин: ",$l; echo "<br>Пароль: ",$p; }catch(Exception $e){ echo $e->getMesage(); } } } $obj = new A("","clown","111"); ?> [/PHP] Я хочу чтоб сработало исключение при пустой передаче первого аргумента конструктору, а исключение не срабатывает, а выдаёт такой результат: [PHP]Имя: Логин: Пароль:[/PHP] и даже значения переданные конструктору не подставляются. |
|
|
alexdrob |
25.7.2011, 21:33;
Ответить: alexdrob
Сообщение
#4
|
|
|
|
|
romantik2011
|
Сообщение
#5
|
|
Вот так вообще выдаёт ошибку:
[PHP] <?php class A{ function __construct($n,$l,$p){ try{ if($n=="" or $l=="" or $p=="") throw new Exception("Ошибка, один из аргументов не передан конструктору!"); echo "Имя: ",$n; echo "<br>Логин: ",$l; echo "<br>Пароль: ",$p; }catch(Exception $e){ echo $e->getMesage(); } } } $obj = new A("","clown","111"); ?> [/PHP] Fatal error: Call to undefined method Exception::getMesage() in C:\www\htdocs\test.ru\www\index.php on line 14
|
|
|
alexdrob |
25.7.2011, 21:38;
Ответить: alexdrob
Сообщение
#6
|
|
слово message пишется с 2 s
|
|
|
romantik2011
|
Сообщение
#7
|
|
Всё, спасибо так, сработало.
[PHP] <?php class nameExc extends Exception{ function __construct($msg){ $msg .=" name!"; parent::__construct($msg); } } class loginExc extends Exception{ function __construct($msg){ $msg .=" login!"; parent::__construct($msg); } } class passExc extends Exception{ function __construct($msg){ $msg .=" password!"; parent::__construct($msg); } } class A{ function __construct($n,$l,$p){ try{ if($n=="") throw new nameExc("Введите"); if($l=="") throw new loginExc("Введите"); if($p=="") throw new passExc("Введите"); }catch(nameExc $e){ echo $e->getMessage(); } catch(loginExc $e){ echo $e->getMessage(); } catch(passExc $e){ echo $e->getMessage(); } } } $obj = new A("","clown","111"); ?> [/PHP] Меня интересует один вопрос. Зачем нужно писать throw, если зроу выдаёт исключения ,а потом всё равно идёт переход от него в catch и КЭТЧ выбрасывает ещё исключение, зачем это нужно? Почему не достаточно одно блока try...catch? Зачем нужен всё-таки ЗРОУ, если его же задачу может выполнить КЭТЧ? |
|
|
RayOfLight |
26.7.2011, 4:34;
Ответить: RayOfLight
Сообщение
#8
|
|
Потому что с помощью throw выбрасывается то самое исключение, которое попадет в catch, т.е., проще говоря, ничего не поймается, если ничего не выбросить.
|
|
|
Mulder_hb |
26.7.2011, 10:51;
Ответить: Mulder_hb
Сообщение
#9
|
|
Меня интересует один вопрос. Потому что обычно исключение вбрасывается в одном сценарии, а ловится оно совсем в другом. На этом построен весь принцип работы с исключениями: код, в котором произошло исключение, зачастую ничего не знает о том, как его обрабатывать. Ваш код правильно записывать так: Файл 1.php: [PHP]<?php class A { function __construct($n, $l, $p) { if ($n == "") { throw new nameExc("Введите"); } if ($l == "") { throw new loginExc("Введите"); } if ($p == "") { throw new passExc("Введите"); } } }[/PHP] Файл 2.php: [PHP]<?php try { $obj = new A("","clown","111"); }catch(nameExc $e) { echo $e->getMessage(); } catch(loginExc $e) { echo $e->getMessage(); } catch(passExc $e){ echo $e->getMessage(); } catch (Exception $e) { // Заглушка }[/PHP] |
|
|
alexdrob |
26.7.2011, 10:53;
Ответить: alexdrob
Сообщение
#10
|
|
вообще блок catch предназначен не только для вывода сообщений об ошибке. это блок, код которого будет выполнен если ошибка произошла, возможно у вас там будет отключение от БД или какой либо ещё код, который нужно выполнить в случае если у вас не выполнился основной код.
|
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое | 5 | CULA | 3401 | 19.12.2023, 18:55 автор: CULA |
|
Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery Разработка сайтов и сервисов под-ключ |
0 | alexey | 1242 | 24.11.2023, 14:46 автор: alexey |
|
Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP) | 56 | qpPeW | 44910 | 19.7.2023, 10:03 автор: qpPeW |
|
Есть спецы по php/laravel? | 3 | Mixatraider | 1889 | 26.5.2023, 20:48 автор: Mixatraider |
|
Опытный PHP\Python разработчик в поиске интересных задач | 6 | daikzlex | 3402 | 25.5.2023, 13:55 автор: daikzlex |
Текстовая версия | Сейчас: 20.4.2024, 7:03 |