Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP异常捕获和编程逻辑_Php_Exception_Logic - Fatal编程技术网

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"