php例外:应该重新抛出异常

时间:2011-09-19 11:57:01

标签: php exception-handling try-catch

更新 我想做这样的事情: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 :(得分:0)

我没有太多的解决方案来解决你的问题,但是对于你的应用程序的每个部分都有一个异常类是我认为不好的方法。它没有多大意义。

我只是使用错误代码并通过它识别“Exception thrower”。