これはうまくいくはずです。私が何か間違っていると教えてください。私はそれが正常に動作しますループ内でスローを移動するが、それは私の目的に反した場合、PHPの例外 - スロー/キャッチがループを越えて動作しない
<?php
try {
echo "start";
throw new Exception("test");
for ($index=0; $index < 1; $index++) {
echo "loop";
}
} catch (Exception $e){
echo "caught $e";
}
?>
私がキャッチされない例外を取得しています:
は、ここでは、コードです。別のtry/catchブロックでハックすることもできますが、それはハックします。
5.2.13と5.2.17サーバーで試しました。現在の生産量は5.2.17であり、5.3.8でそれをテストしていません。なぜなら、アップグレードするためにホストに手を入れて、たくさんのコードを再テストする必要があるからです。
好きですか?
P.S. 私は例外とキャッチされない例外の違いを知っています。しかし、ここに結果があります:
start
Fatal error: Uncaught exception 'Exception' with message 'test' in C:\UniServer\www\admin\water_ws\test.php:4 Stack trace: #0 {main} thrown in C:\UniServer\www\admin\water_ws\test.php on line 4
[viper7(5.2.15RC3-dev)](http://codepad.viper-7.com/KALRDl)と[codepad(5.2.5)](http://codepad.org/WPkjTxnn)...あなたはここに何か他のものがないと確信していますか?あなたが 'echo $ e'(Exceptionを文字列に変換する)という事実は、同様の出力をキャッチされないケースに表示することは役に立たないかもしれません。 – cmbuckley
どのように動作していないのか詳しく説明できますか?それは "ループ"を印刷し、 "捕まえられたテスト"ではありませんか? – atxdba
OPはいずれも示唆していません(キャッチされない例外)。しかし、私は 'catch $ e'は' Fatal error:Uncaught $ e'のように見えると思います。 – cmbuckley