假设在try...catch
块中包含PHP代码。假设在catch
内你想做一些可能会失败的事情(即发送电子邮件)并抛出新的异常。
try {
// something bad happens
throw new Exception('Exception 1');
}
catch(Exception $e) {
// something bad happens also here
throw new Exception('Exception 2');
}
处理catch
阻止内的异常的正确(最佳)方式是什么?
答案 0 :(得分:1)
你不应该在catch
中扔任何东西。如果你这样做,那么你可以省略try-catch的这个内层并在try-catch的外层捕获异常并在那里处理那个异常。
例如:
try {
function(){
try {
function(){
try {
function (){}
} catch {
throw new Exception("newInner");
}
}
} catch {
throw new Exception("new");
}
}
} catch (Exception $e) {
echo $e;
}
可以替换为
try {
function(){
function(){
function (){
throw new Exception("newInner");
}
}
}
} catch (Exception $e) {
echo $e;
}
答案 1 :(得分:1)
基于this answer,嵌套try / catch块似乎是完全有效的,如下所示:
try {
// Dangerous operation
} catch (Exception $e) {
try {
// Send notification email of failure
} catch (Exception $e) {
// Ouch, email failed too
}
}
答案 2 :(得分:0)
您有两种可能的方式: