首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

通过错误控制程序走向是否可取

2013-01-18 
通过异常控制程序走向是否可取?这种方式我在MFC里见过。函数通过返回值表示一组状态,抛出异常表示一组状态。

通过异常控制程序走向是否可取?
这种方式我在MFC里见过。
函数通过返回值表示一组状态,抛出异常表示一组状态。
在调用方通过接收返回值和捕获异常来检查函数状态。


函数就这么用,异常也并非是“异常”,而是正常情况之一。

请问这种方式可取吗?
[解决办法]
个人意见:不可取。
[解决办法]
不可取,单效率上说就差好几个等级
[解决办法]
好理解,有方便処,就用。
[解决办法]
可不可取要看整个代码结构,而不能是其他函数靠返回码,个别抛异常;
如果是OO代码,就用异常
[解决办法]
如果不抛出异常  层层返回 可能会比较麻烦
[解决办法]

引用:
如果不抛出异常  层层返回 可能会比较麻烦


直接goto不OK?
GOTO也就这个时候好用
[解决办法]
异常不是这样用的,这样写的代码别人怎么看啊。。。
[解决办法]
异常要只在真正发生异常的时候再用
异常流程的效率比起正常流程要低很多
[解决办法]
try catch在处理像文件操作时真的好用,逻辑非常清晰,用if 和 else比不上。但是try catch效率摆在那儿,真心无语。
[解决办法]
程序流程应该是语言无关的。
[解决办法]
一般没有把正常的当成异常抛出再处理的吧
[解决办法]
引用:
如果不抛出异常  层层返回 可能会比较麻烦

谁说必须要抛出异常才能返回最外层或指定的某一层?
#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
//

[解决办法]
引用:
引用:学习了,但是不晓得这个比抛出异常好在哪里? 看起来代码更复杂了
引用:引用:如果不抛出异常  层层返回 可能会比较麻烦
谁说必须要抛出异常才能返回最外层或指定的某一层?
C/C++ code?1234567891011121314151617181920……



C++这么干必然是错误的

热点排行