php Try Catchマルチレベル例外テスト

WBOY
リリース: 2016-06-23 13:59:20
オリジナル
1125 人が閲覧しました

<?phpclass a { public function a1 () {  try {   throw new Exception('123');  } catch (Exception $e) {   throw $e;  } }}class b { public function b1 () {  try {   $a = new a();   $a->a1();  } catch (Exception $e) {   throw $e;   //throw new Exception($e->getMessage());  } }}class c { public function c1 () {  try {   $a = new b();   $a->b1();  } catch (Exception $e) {   throw $e;  } }}try { $c = new c();  $c->c1();} catch (Exception $e) { echo $e->getTraceAsString();}echo 'end';?>
ログイン後にコピー

try catch ページで c の c1 を使用し、c1 で b の b1 を使用し、b1 で a の a1 を使用します。

デフォルトは、a1 で例外をスローし、b1 で a1 の例外をキャッチし、次に今例外をスローし、c1 がそれ​​をキャッチしてスローし、最後にページがそれをキャプチャして出力します。
結果は次のようになります:
.php(28): b->b1()
#2 D:workspacemyzCollectiontest.php(37): c->c1()
#3 C:Program FilesZendZendStudio-5.2.0binphp5dummy。 php(1): include ('D:workspacemy...')
#4 {main}end



2 番目のテスト:
b1 の throw $e を削除します。つまり、スローされません。
結果は次のようになります:
getMessage());Open。
b1 より上の呼び出しが a1 の例外を取得できないように、新しい例外をスローします。
結果は次のようになります:
.php(37): c->c1()
#2 C:Program FilesZendZendStudio-5.2.0binphp5dummy.php(1): include('D:workspacemy...')
#3 {main}end



4 番目のテスト:
b1 の try catch throw をすべて削除します。
結果:
元の例外は引き続き出力されます。これは、中間ステップをスローする必要がなく、最上位層が最下位層によってスローされた例外を取得することもできることを意味します。
b に例外がある場合、それを取得する方法がありません。b を検出する必要がある場合は、b に try catch も追加する必要があります。
X-Powered-By: PHP/5.1 .1
コンテンツの種類: text/html

#0 D:workspacemyzCollectiontest.php(16): a->a1()
#1 D:workspacemyzCollectiontest.php(28): b->b1()
#2 D: workspacemyzCollectiontest.php(37): c->c1()
#3 C:Program FilesZendZendStudio-5.2.0binphp5dummy.php(1): include('D:workspacemy...')
#4 {メイン}エンド

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート