我正在通過針對Exception類的PHP文檔,並且我對OOP PHP非常陌生,因此使用PHP預定義和SPL類進行異常處理。異常流理解PHP
雖然我無法得到那裏列出的例子的執行流程。
<?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());
}
?>
這是我迄今爲止的理解。
- 解析器解釋一個函數併爲它分配內存。
- 它進入try塊並執行dostuff();
- 這之後是什麼......以及輸出如何按照如下所示的順序發生如何不明確,即MyCustomException首先出現。
/home/bjori/ex.php:8 Something happened (911) [MyCustomException] /home/bjori/ex.php:6 You are doing it wrong! (112) [InvalidArgumentException]
請人流下了燈就可以了!非常感謝 !
您捕獲一個異常,它會停止它的傳播。然後再拋出另一個異常(一個與另一個異常相關的事實是無關緊要的),然後再傳播。你期望會發生什麼? –