我script_a.php
:處理異常,只有執行的代碼,如果一個異常被拋出不
try {
Class1::tryThis();
}
catch (Exception $e) {
// Do stuff here to show the user an error occurred
}
Class1::tryThis()
具有類似:
public function tryThis() {
Class2::tryThat();
self::logSuccessfulEvent();
}
的問題是,Class2::tryThat()
可以拋出異常。
如果確實會拋出異常,看起來行self::logSuccessfulEvent();
仍然被執行。
我如何重構這段代碼,以便self::logSuccessfulEvent()
只有當一個異常沒有拋出,但在同一時間讓script_a.php
知道什麼時候異常已被扔發生?
問題在別的地方 – miki 2012-03-13 16:33:51
「好像是」?如果'tryThat'拋出一個未處理的異常,'tryThis'('self :: logSuccessfulEvent()')**中的下一行將不會運行。** – webbiedave 2012-03-13 16:36:50
@webbiedave和OP:你絕對正確。下一行無法運行,並且它在我沒有意識到的情況下被事先執行。因此,PHP異常按我的預期工作:在當前代碼塊中拋出異常的語句之後沒有執行代碼。 – eoinoc 2012-03-20 11:23:24