Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Преимущество try {} catch() {}
Форумы портала PHP.SU » » Вопросы новичков » Преимущество try {} catch() {}

Страниц (3): [1] 2 3 »
 

1. teddy - 06 Мая, 2013 - 15:59:20 - перейти к сообщению
Добрый день! Подскажите пожалуйста, в чем преимущество данного перед например, if elseif? Есть ли смысл громоздить код подобной конструкцией? Ведь можно обойтись обычным if elseif

Не вижу разницы... Может вы, подскажете? ) Растерялся
2. OrmaJever - 06 Мая, 2013 - 16:14:50 - перейти к сообщению
исключение может выйти из любой вложености.
3. teddy - 06 Мая, 2013 - 16:16:47 - перейти к сообщению
OrmaJever пишет:
исключение может выйти из любой вложености.

Ведь исключение опять же проверяется при помощи if, или я ошибаюсь? если да, то в чем? -)
4. DelphinPRO - 06 Мая, 2013 - 16:28:01 - перейти к сообщению
когда-нибудь ты будешь писать относительно большое приложение, и запутаешься в хитросплетениях своих if-ов. тогда ты станешь искать выход. тебе будет нужно более простое, мощное и универсальное решение отлова ошибок. и ты найдешь эксепшены.
5. teddy - 06 Мая, 2013 - 16:37:38 - перейти к сообщению
OrmaJever
DelphinPRO
В целом, идея понятна -) Спасибо вам Подмигивание
6. OrmaJever - 06 Мая, 2013 - 16:38:05 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. function a($a) {
  2.    if($a === null) throw new Exception('variable $a is null');
  3.    /// ...
  4.  
  5. }
  6.  
  7. function b($a, $b, $c) {
  8.    /// ....
  9.    a();
  10. }
  11.  
  12. function c() {
  13.    b(1,4,67);
  14.    /// ...
  15. }
  16. try{
  17.  c();
  18. } catch(Exception $e) {
  19.    echo $e->getMesage();
  20. }

сдейлайте тоже самое с обычными условиями, и покажите что получилось.
7. teddy - 06 Мая, 2013 - 16:39:00 - перейти к сообщению
Отдал "Спасибо" DelphinPRO, хотел и OrmaJever, но почему то не добавляется -( какой лимит установлен на повторное "спасибо"? )
8. caballero - 06 Мая, 2013 - 16:42:37 - перейти к сообщению
Цитата:
Добрый день! Подскажите пожалуйста, в чем преимущество данного перед например, if elseif? Есть ли смысл громоздить код подобной конструкцией? Ведь можно обойтись обычным if elseif

Каким боком исключения относятся к if-else?
Обработка исключений предназначена именно для исключений а не для организации логики работы программы.
9. teddy - 06 Мая, 2013 - 16:42:49 - перейти к сообщению
OrmaJever
теперь понял, всё, спасибо ) это получается как один большой if -) актуально для более объемных проектов как выше написал DelphinPRO, а в "малых" случаях думаю if elseif самое оно )

тему можно шлепнуть...
(Добавление)
caballero
Суть - ловить ошибки... такую же возможность предоставляет нам if elseif
10. OrmaJever - 06 Мая, 2013 - 16:45:57 - перейти к сообщению
caballero пишет:
Каким боком исключения относятся к if-else?
Обработка исключений предназначена именно для исключений а не для организации логики работы программы.

Да вопрос вполне правельный. На Си без исключений обходятся имено убычными условиями и ретурнами.
11. caballero - 06 Мая, 2013 - 16:51:08 - перейти к сообщению
Цитата:
Да вопрос вполне правельный. На Си без исключений обходятся имено убычными условиями и ретурнами.

Не вижу ничего правильного - в обычном С просто нет обработчиков исключений (если не считать макросы которые имитируют это, например в майкрософтовском компиляторе). И ввели try -catch в языки именно потому что операторы контроля выполнения это одно а исключительные ситуации совсем другое.
(Добавление)
Цитата:
Суть - ловить ошибки... такую же возможность предоставляет нам if elseif


не предоставляет.
(Добавление)
Цитата:
это получается как один большой if -)

это у тебя так получается. И в остальных быдлокодеоров, не понимающих элементарных вещей в организации програмного кода.
12. teddy - 06 Мая, 2013 - 17:25:12 - перейти к сообщению
caballero пишет:
это у тебя так получается. И в остальных быдлокодеоров, не понимающих элементарных вещей в организации програмного кода.

Простите, вселенский "Гуру"... Если вы внимательно читали, то я пишу разделе "Вопросы новичков". В связи с тем, что я на стадии обучения и задаю вопросы дабы исключить все "ошибочные мнения", это характеризует меня как человека, который в дальнейшем после завершения обучения не желает быть "быдлокодером", коем меня в данном случае назвать нельзя из за того, что я пока учусь... Вам даже модератор форума выше отписал, которого видимо назначили на эту должность не с проста, видимо он что то понимает в программировании и довольно не мало... Если вы не понимаете таких простых вещей, это не дает вам право бросаться "быдло" фразами в мой адрес. Научитесь нормально разговаривать ибо если я начну хамить, мало не покажется... Как и в прошлый раз я уже говорил, если есть претензии ко мне - обращаемся в личку... Если нет, то не нужно искать повод для "подкорывки" моих тем или сообщений. Надеюсь я ясно выразился...
13. OrmaJever - 06 Мая, 2013 - 17:32:53 - перейти к сообщению
caballero чё ты такой агрезивный? У тебя абсолютно все ответы в темах как бы с наездом.
caballero пишет:
Не вижу ничего правильного - в обычном С просто нет обработчиков исключений (если не считать макросы которые имитируют это, например в майкрософтовском компиляторе).

Если в этом нет ничего правельного как на Си писать иначе? Макросы не выход ибо это те же условия.
14. caballero - 06 Мая, 2013 - 18:17:51 - перейти к сообщению
Цитата:
что я на стадии обучения и задаю вопросы дабы исключить все "ошибочные мнения", это характеризует меня как человека, который в дальнейшем после завершения обучения не желает быть "быдлокодером", коем меня в данном случае назвать нельзя из за того, что я пока учусь...


вот и читай ответы. Я тебе написал что это разные и никак не связаные вещи а ты " я все понял - try - это большой if ". Или по твоему разработчикам языка нефиг делать и они плодят дублирующий друг друга функционал?


Цитата:
caballero чё ты такой агрезивный? У тебя абсолютно все ответы в темах как бы с наездом.

не все. я потомственный педагог - за километр чую когда человек старается что то выучить но у него не выходит или он даже не пытается понять и разобратся.
В данном случае человек даже не удосужился почитать что такое исключения
и как они используются в программировании. Уверен что даже в педивикии не написано что типа чуваки try - catch это просто if else но только с понтами.

Цитата:
Если в этом нет ничего правельного как на Си писать иначе? Макросы не выход ибо это те же условия.

на С просто нет выбора - там нет обработки исключений и соответственно вопрос выбора там не стоит и логика работы программы организовывается на основании того что есть.. так эе как там нет объектов и передачу структур данных приходится делать через указатели через параметры функций. Типичный пример - работа с виндовым API - веселое занятие.
но если вводят какие то языковые конструкции то их вводят не для того чтобы заменить маленький if большим.
15. teddy - 06 Мая, 2013 - 18:51:12 - перейти к сообщению
Ванга детектед Радость

caballero
Да читаю я, читаю... не нервничай. Поверь, подагог из тебя не очень, ну на первый взгляд во всяком случае. Понятное дело что это разные вещи, не принципиально называть всё своими именами, особенно некоторых людей.. Суть главное, чтоб понятной была.. Если ты такой умный, то ответь мне пожалуйста на один вопрос - какую БД лучше всего использовать? и главное почему именно ту, а не эту...

ps.: интересует ответ на данный вопрос только от этого товарисча )

Прошу прощения за флуд, заранее..

 

Powered by ExBB FM 1.0 RC1