PHP异常捕获和编程逻辑
我试图捕捉对象创建时的错误,因为这个对象有时可能也应该抛出错误PHP异常捕获和编程逻辑,php,exception,logic,Php,Exception,Logic,我试图捕捉对象创建时的错误,因为这个对象有时可能也应该抛出错误 try { $obj = new MyObject(); } catch (Exception $e) { echo 'Caught exception: '; } 我想用这个新对象做很多事情,但前提是它是在不引发异常的情况下创建的 问题是我不想在try-catch块中做所有这些事情。我将如何做到这一点 非常感谢 迈克尔在外面做没有意义。在try/catch块中执行所有操作以测试错误也更有意义 您应该将它放在try
try {
$obj = new MyObject();
} catch (Exception $e) {
echo 'Caught exception: ';
}
我想用这个新对象做很多事情,但前提是它是在不引发异常的情况下创建的
问题是我不想在try-catch块中做所有这些事情。我将如何做到这一点
非常感谢
迈克尔在外面做没有意义。在
try/catch
块中执行所有操作以测试错误也更有意义
您应该将它放在
try/catch
块中,因为它正是为它而设计的。我真的看不出您这样问的原因,但也许最好的办法是在从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块之前的开关设置为on,并在catch块中将其设置为off。这样,您就可以测试开关,看看是否要执行所有其他内容
$mySwitch = true;
try {
$obj = new MyObject();
} catch (Exception $e) {
echo 'Caught exception: ';
$mySwitch = false;
}
if($mySwitch){
// do some stuff here
}
有点奇怪-但你可以死或重定向
try {
$obj = new MyObject();
} catch (Exception $e) {
die("Caught exception: {$e->getMessage()}");
}
//program continues as it hasn't "died"
或者
。。。尽管正如其他人所说的那样——也许还是更合理的做法是尝试一下将整个卡布多包装起来。。。catch块。为什么要在try/catch之外处理此问题?这正是它的设计目的…可以在catch块中尝试
返回false
?这样,如果对象存在,您就可以继续运行,而不必将所有代码嵌套在try中。如果对象不存在,调用该代码的函数将返回false。您首选的方法是哪种,为什么?或为什么首先要避免try/catch块..?第二个选项是我首选的方法。如果有可能避免试捕,那就更好了。
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"