我已经将Exception
类扩展了两次以捕获不同类型的异常。当第一个异常被捕获时,我检查另一个错误,如果有错误,我再次抛出一个新异常。
问题是我无法抓住第二个例外。
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 {
//
}
答案 0 :(得分: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 {
//
}