我正在尝试捕获对象创建时的错误,因为此对象可以而且有时会抛出错误。
try {
$obj = new MyObject();
} catch (Exception $e) {
echo 'Caught exception: ';
}
我想用这个新对象做很多事情,但只有在创建时没有抛出异常。
问题是我不希望在try catch块中执行所有这些操作。我该如何做到这一点?
非常感谢 迈克尔
答案 0 :(得分:4)
我真的看不出你要问的任何理由,但也许最好的办法是在你从try / catch块调用的函数中做所有其他的东西...
function allMyStuff($obj){
// do some stuff to $obj here
}
try {
$obj = new MyObject();
allMyStuff($obj);
} catch (Exception $e) {
echo 'Caught exception: ';
}
否则,按照你似乎要求的字面意思,你可以在try / catch块之前设置一个开关,然后在catch块中将它设置为off。这样你就可以测试开关,看看是否要执行所有其他的东西。
$mySwitch = true;
try {
$obj = new MyObject();
} catch (Exception $e) {
echo 'Caught exception: ';
$mySwitch = false;
}
if($mySwitch){
// do some stuff here
}
答案 1 :(得分:1)
在外面做这件事毫无意义。在try/catch
块中执行所有操作以测试错误是更有意义的。
您应该将其保留在try/catch
块内,因为它正是它的设计目标。
答案 2 :(得分:0)
有点奇怪 - 但你可能会死或重定向......
try {
$obj = new MyObject();
} catch (Exception $e) {
die("Caught exception: {$e->getMessage()}");
}
//program continues as it hasn't "died"
...或
try {
$obj = new MyObject();
} catch (Exception $e) {
header("Location:/exceptionHandler.php?e=" . rawurlencode(serialize($e)));
die();
}
//program continues as it's not been redirected or "died"
......虽然正如其他所有人所说的那样 - 将整个kaboodle包裹在一个试试......块中可能仍然更有意义。