[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выйти из цепочки методов через исключение
Страницы: 1, 2, 3
inpost
glock18
"архитектура просто неправильная"
Моя архитектура класса: Класс имеет несколько методов. Метод А вызывает метод Б, метод Б вызывает метод В. Всё.
Всё, что я вижу:
1) Существует класс - всё ок.
2) Сущесвуют несколько методов - всё ок.
3) Метод А вызывает метод Б - всё ок.
4) Метод Б вызывает метод В - тут ошибка? Нельзя стек создавать?

Я спрашиваю очень простую вещь, где именно ошибка архитектуры. Просто тыкни пальцем: "нельзя делать так, а у тебя так сделано".

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
vasa_c
так можно и нужно делать.
но ты ещё хотел что бы код, вызвавший первый метод класса как-то волшебным образом продолжил выполняться.

_____________
Блог ГО | Таблица символов Юникода | Графомания
Oyeme
Архитектура и вправду не очень понятнa.Но это не моя задача.
Я бы делал вот так вот.Можно еше расширить класс Exception ,то есть наследовать его.

Так же можно расширить использу multiple exception во всех методах.
Вот как бы я делал.

Это всего лишь пример,как можно отлавливать.

Class A {
public function getA(){
try {
$this->getB();
//continue code execution
$this->getD();
//next line
$this->anotherCoolMethod();

} catch (Exception $e){
throw new Exception($e->getMessage());
}
}


public function getB(){
try {
$this->getC();
} catch (Exception $e){
throw new Exception($e->getMessage());
}
}


public function getC(){
try {
throw new Exception('Something went wrong');
} catch (Exception $e){
throw new Exception($e->getMessage());
}
}


public function getD(){
try {
//some code
} catch (Exception $e){
throw new Exception($e);
}
}
}


try {
$aInstance = new A();
$aInstance->getA();
} catch (Exception $e){
//Sometimes I need what only you can provide: your absence
echo $e->getMessage();
}
Быстрый ответ:

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