在子函数中中断父函数(最好是PHP)
我遇到了一个问题,想知道怎么在不修改父函数代码的情况下,停止或结束父函数的执行,使用的是PHP语言。
我想不出其他解决办法,除了在子函数里用 die();,这样会结束所有的执行,父函数调用之后的代码也会停止。有没有其他的想法呢?
代码示例:
function victim() {
echo "I should be run";
killer();
echo "I should not";
}
function killer() {
//code to break parent here
}
victim();
echo "This should still run";
2 个回答
1
请注意,异常在以下情况下是无法工作的:
function victim() {
echo "this runs";
try {
killer();
}
catch(Exception $sudden_death) {
echo "still alive";
}
echo "and this runs just fine, too";
}
function killer() { throw new Exception("This is not going to work!"); }
victim();
你需要其他的解决方案,唯一更可靠的方法就是安装你自己的错误处理程序,确保所有错误都能报告给这个错误处理程序,并且确保错误不会被转换成异常;然后触发一个错误,让你的错误处理程序在完成时终止脚本。这样,你就可以在 killer()/victim() 的上下文之外执行代码,并防止 victim() 正常完成(前提是你确实在错误处理程序中终止了脚本)。
7
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有人可能在使用某个特定的功能时,发现它没有按照预期工作。这时候,查看其他人的经验和解决方案就显得特别重要。
在StackOverflow上,很多人会分享他们遇到的问题和解决办法。通过阅读这些内容,我们可以学到很多,尤其是如何避免一些常见的错误,或者如何更有效地使用某些工具。
总之,编程的过程中,遇到问题是很正常的,关键是要善于寻找资源和借鉴他人的经验,这样才能不断进步。
function victim() {
echo "I should be run";
killer();
echo "I should not";
}
function killer() {
throw new Exception('Die!');
}
try {
victim();
} catch (Exception $e) {
// note that catch blocks shouldn't be empty :)
}
echo "This should still run";