【发布时间】: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