通过异常控制程序走向是否可取?
这种方式我在MFC里见过。
函数通过返回值表示一组状态,抛出异常表示一组状态。
在调用方通过接收返回值和捕获异常来检查函数状态。
函数就这么用,异常也并非是“异常”,而是正常情况之一。
请问这种方式可取吗?
[解决办法]
个人意见:不可取。
[解决办法]
不可取,单效率上说就差好几个等级
[解决办法]
好理解,有方便処,就用。
[解决办法]
可不可取要看整个代码结构,而不能是其他函数靠返回码,个别抛异常;
如果是OO代码,就用异常
[解决办法]
如果不抛出异常 层层返回 可能会比较麻烦
[解决办法]
#include <stdio.h>
#include <setjmp.h>
jmp_buf mark;
int i=0;
void c() {
printf( "c in\n");
if (1==i%2) longjmp( mark, i );
printf( "c out\n");
}
void b() {
printf( "b in\n");
c();
printf( "b out\n");
}
void a() {
printf( "a in\n");
b();
printf( "a out\n");
}
void main( void )
{
int jmpret;
jmpret = setjmp( mark );
printf( "Start %d\n",jmpret);
if( jmpret == 0 ) {
printf( "First\n");
a();
i++;
a();
} else {
printf( "Second\n");
}
}
//Start 0
//First
//a in
//b in
//c in
//c out
//b out
//a out
//a in
//b in
//c in
//Start 1
//Second
//