异常流理解PHP
我正在浏览异常类的PHP文档,我对OOP PHP非常陌生,因此对PHP预定义类和SPL类的异常处理也非常陌生 在运行过程中,我很难获得这里列出的示例的执行流异常流理解PHP,php,exception-handling,Php,Exception Handling,我正在浏览异常类的PHP文档,我对OOP PHP非常陌生,因此对PHP预定义类和SPL类的异常处理也非常陌生 在运行过程中,我很难获得这里列出的示例的执行流 <?php class MyCustomException extends Exception {} function doStuff() { try { throw new InvalidArgumentException("You are doing it wrong!", 112); } catc
<?php
class MyCustomException extends Exception {}
function doStuff() {
try {
throw new InvalidArgumentException("You are doing it wrong!", 112);
} catch(Exception $e) {
throw new MyCustomException("Something happened", 911, $e);
}
}
try {
doStuff();
} catch(Exception $e) {
do {
printf("%s:%d %s (%d) [%s]\n", $e->getFile(), $e->getLine(), $e->getMessage(), $e- >getCode(), get_class($e));
} while($e = $e->getPrevious());
}
?>
这是我到目前为止的理解
/home/bjori/ex.php:8发生了什么事(911)[MyCustomException]
/home/bjori/ex.php:6你做错了!(112)[无效辩论例外]
任何人都可以解释一下!非常感谢 IndoStuff()您首先抛出一个InvalidArgumentException(第一个异常),该异常被捕获在doStuff()中然后再次将其作为MyCustomException(第二个异常)抛出。因此,在外部try-and-catch块中,最后一次抛出的异常是MyCustomException,因此,先前的异常是/曾经是InvalidArgumentException
返回上一个异常(异常的第三个参数::\构造()
希望能有所帮助。在doStuff()中您首先抛出一个InvalidArgumentException(第一个异常),该异常被捕获在doStuff()中然后再次将其作为MyCustomException(第二个异常)抛出。因此,在外部try-and-catch块中,最后一次抛出的异常是MyCustomException,因此,先前的异常是/曾经是InvalidArgumentException
返回上一个异常(异常的第三个参数::\构造()
希望这能有所帮助。您捕获到一个异常,它会停止其传播。然后抛出另一个异常(一个异常链接到另一个异常的事实是不相关的),该异常从此开始传播。您希望发生什么?您捕获了一个异常,它会停止其传播。然后抛出另一个异常(一个异常链接到另一个异常的事实是不相关的),该异常从此开始传播。你以为会发生什么?