Исключения PHP: исключение должно быть переброшено - PullRequest
0 голосов
/ 19 сентября 2011

UPDATE: Я хочу сделать что-то вроде этого: http://framework.zend.com/wiki/display/ZFDEV2/Proposal+for+Exceptions+in+ZF2 вот так мне нужны все отдельные исключения для каждого компонента фреймворка

<?php

class ClassA {
    public function doSomething() {
        throw new ClassA\Exception\BadMethodCallException('bad method called');
    }
}

class Application {
    public function MainMethod() {
        $ClassA = new ClassA();
        $ClassA->doSomething();
    }
}

try {
    $Application = new Application();
    $Application->MainMethod();
} catch(\Application\Exception $e) {
    // exception cannot be catched, because ClassA\Exception\BadMethodCallException was thrown
}

?>

В моем фреймворке компоненты eatch имеют свои собственные классы исключений. Итак, логично ли, что Application выдает исключение ClassA или я должен перехватить ClassA\Exception\BadMethodCallException в MainMethod и перебросить в Application\Exception\BadMethodCallException следующим образом:

<?php
class Application {
        public function MainMethod() {
            $ClassA = new ClassA();
            try {
                $ClassA->doSomething();
            } catch(\ClassA\Exception\BadMethodCallException $e) {
                throw new Application\Exception\BadMethodCallException('message', null, $e);
            }
        }
    }
?>

1 Ответ

0 голосов
/ 19 сентября 2011

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

Я бы просто поработал с кодами ошибок и определил "Исключитель" по этому.

...