【发布时间】:2011-04-08 10:50:09
【问题描述】:
如何在构造中以最佳方式处理异常?
option1 - 捕获创建对象的异常:
class Account {
function __construct($id){
if(empty($id)){
throw new My_Exception('id can\'t be empty');
}
// ...
}
}
class a1 {
function just($id){
try {
$account = new Account($id);
}
catch(Exception $e){
$e->getMessage();
}
}
class a2{
function just($id){
try {
$account = new Account($id);
}
catch(Exception $e){
$e->getMessage();
}
}
option2:在 __construct 中捕获异常
class Account{
function __construct($id){
try{
if(empty($id)){
throw new My_Exception('id can\'t be empty');
}
// ...
}
catch(My_Exception $e) {
}
}
请写下在哪些情况下应该使用option1,在哪些情况下应该使用option2或其他更好的解决方案。
谢谢
【问题讨论】:
-
我不会投票结束,因为我不确定你的具体问题的所有细节,但这里有一个非常相关的问题:stackoverflow.com/questions/2685857/php-exceptions-in-classes(我个人喜欢替代方法@Gordon在他的回答中使用
::create()best)
标签: php exception exception-handling