这就是我想要做的(这是一个真正的项目的简化):如何正确实施最终条件?
int param;
int result;
void isolated(int p) {
param = p;
try {
// make calculations with "param" and place the
// result into "result"
process();
} catch (...) {
throw "problems..";
}
}
我不能改变的方式process()
作品,因为在这个项目不会创建这个功能,是第三方功能。它适用于全局变量param
和result
,我们不能改变这一点。
当isolated()
从另一个参数process()
回叫时出现问题。我想知道这种情况,但不知道该怎么做,因为finally
在C++中不存在。我觉得我应该使用RAII技术,但在这种情况下无法正确理解如何去做。
这就是我如何与代码重复使它:
int param;
int result;
void isolated(int p) {
static bool running;
if (running) {
throw "you can't call isolated() from itself!";
}
running = true;
param = p;
try {
// make calculations with "param" and place the
// result into "result"
process();
running = false;
} catch (...) {
running = false; // duplication!
throw "problems..";
}
}
我不明白。您想做什么? (假设'finally'存在) – kennytm 2010-07-16 08:33:06
问题是,我应该在* catch和'try'中放置*标志,这显然是代码重复。我现在将延长这个问题 – yegor256 2010-07-16 08:38:53
这是不清楚什么是抛出异常。 – aggsol 2010-07-16 08:46:01