关于错误跳转的问题

woodzong 2004-01-17 08:20:29
在处理错误的时候遇到了一个跳转的问题:

void dealerror(char * errorinfo)
{
....
}

void main()
{
...
function1();
function2();
...
}

在function1 和 function2 中 我都有调用dealerror函数对错误的进行判断处理 不过我不知道 那个dealerror应该怎跳转才能使function1 出错时显示了错误信息后继续执行 function2, function2 出错时继续执行下面的代码. 原来我是用exit(0)的不过发现一dealerror 后就跳出了. dealerror函数应该怎么写才能进行合理的跳转呢? 谢谢各位大侠了...

有大侠说 把dealerror中的exit(0)改为 return
不过
如果用exit(0) >> return 我在循环里发现了错误就不行了,
例如在function1函数中
while(...)
{
if(error)
dealerror();
}
用return的话 它只会跳出去继续执行循环... 而不是跳出整个function1函数
...全文
32 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sandrowjw 2004-01-18
  • 打赏
  • 举报
回复
在里面throw,在外面catch是最方便的。
如果你用的是c,则会出错的函数都要有一个返回值确定是否出错,然后在外面break就可以了。
darkhawk 2004-01-18
  • 打赏
  • 举报
回复
在C++中可以用异常,在C中就只能根据函数的返回值自己控制程序流程了。
neptunez 2004-01-17
  • 打赏
  • 举报
回复
bool dealerror(...)
{
if error
return false
....
return true;
}


void func1()
{
while()
{
if dealerror then
...
else
return;
}
}
lifanxi 2004-01-17
  • 打赏
  • 举报
回复
程序运行有固定的流程,当然不是想怎么跳就怎么跳的。
用return的方法是可行的,要跳出循环也是可以的,只要在dealerror();后加个break;就行了。但这不能使当前函数立即结束。
如果你是要进行更灵活的错误处理和跳转,可以用异常处理:
try
{
func();
}
catch
{
//如果在func()中有throw;就可以跳到这里。
}
您可以参见相关的书籍。
dddd8888 2004-01-17
  • 打赏
  • 举报
回复
int fun()
{
int i = 0;
for (; ;)
{
if (i == 5)
{
return 1;
}

i += 1;
}
}

void main ( void )
{
fun();
cout << "hello world" << endl;
}
dddd8888 2004-01-17
  • 打赏
  • 举报
回复
return就是可以跳出循环,那位大侠说的没错

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧