我需要在中间停止程序流,目前我正在使用一个异常。这个流程是合法的流程,我想知道我是否可以在不使用异常的情况下完成它。
这是我的代码示例,我不能更改func_2和func_1
#include "stdio.h"
void func_3()
{
printf("i am func_3\n");
throw 20;
printf("i am not supposed to be here\n");
}
void func_2()
{
printf("i am func_2\n");
func_3();
printf("i am not supposed to be here\n");
}
void func_1()
{
printf("i am func_1\n");
func_2();
printf("i am not supposed to be here\n");
}
int main()
{
try
{
func_1();
}
catch (int e)
{
printf("i am supposed to be here\n");
}
catch (...)
{
printf("i am not supposed to be here\n");
}
}发布于 2014-07-24 19:44:14
简而言之,你不能(嗯.你可以通过使用跳转来代替,但这样你就有两个问题要解决了)。
异常解决方案是要使用的解决方案,但不要抛出数字(数字-尤其是本例中的神奇数字不能告诉您任何事情)。
相反,定义一个struct func_3_interrupted {};极简主义结构,它的类型名称告诉您它是func_3的“中断”,并捕获它;该结构应该为空(或接近于空),并且它可能不应该从std::exception层次结构继承。
https://stackoverflow.com/questions/24932545
复制相似问题