【问题标题】:php exceptions: should exception be rethrownphp异常:是否应该重新抛出异常
【发布时间】:2011-09-19 11:57:00
【问题描述】:

更新: 我想做这样的事情: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 异常是否合乎逻辑,或者我应该在 MainMethod 中捕获 ClassA\Exception\BadMethodCallException 并像这样重新抛出 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);
            }
        }
    }
?>

【问题讨论】:

  • 嗯,按照这个速度,你会有很多try/catch 声明到处乱扔。所有异常类的动机是什么?如果是为了让你跟踪异常,你可以在异常中打印文件/类名,只使用一两个异常类。

标签: php exception-handling try-catch


【解决方案1】:

对于您的问题,我没有太多解决方案,但是在我看来,为您的应用程序的每个部分设置一个异常类是一个不好的方法。这没有多大意义。

我只会处理错误代码并以此识别“异常抛出者”。

【讨论】:

    猜你喜欢
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多