/ / PHPはcatch内でスローされた例外をキャッチできません - php、exception、pdo

PHPはキャッチ中に例外をキャッチできないcatch - PHP、例外、pdo

私は延長した Exception 異なる種類のクラスをキャッチするために2回クラス例外です。最初の例外が捉えられたとき、私は別のエラーをチェックし、もしエラーがあれば私は再び新しい例外を投げます。 問題は、2番目の例外をキャッチできないことです。

class FIRST extends Exception {}
class SECOND extends Exception {}

try {
throw new FIRST("FIRST", 1);
} catch(FIRST $e) {
//caught

if(sth) {
echo "ok"; //printed
throw new SECOND("SECOND", 1);
echo "ok"; //never printed
}
}

catch(SECOND $e) {
//not caught
}

catch(PDOException $e) {
//caught
}

finally {
//
}

回答:

回答№1は2

catch ブロックは、から来る例外のみをキャッチします。 try ブロック。

あなたがのいずれかからスローされた例外をキャッチする必要がある場合 catch 内部コードを別のコードでラップする必要があるブロック try-catch 構造:

try {
throw new FIRST("FIRST", 1);
} catch(FIRST $e) {
//caught

try {
if(sth) {
echo "ok"; //printed
throw new SECOND("SECOND", 1);
echo "ok"; //never printed
}
} catch (SECOND $e) {
//caught
}
}

catch(SECOND $e) {
//not caught
}

catch(PDOException $e) {
//caught
}

finally {
//
}