异常处理-c++用什么替代goto处理错误返回

问题描述

c++用什么替代goto处理错误返回

c风格用goto处理函数的错误返回清理工作等,c++是否只能用异常?do while结构遇到逻辑里面有循环就歇菜了。。

 int foo()
{
    ReportInfo rinfo;
    int ret = 0;

    ret = dosth1();
    if (ret != 0)
    {
        goto error_handler;
    }   

    handle_logic1(&rinfo);

    ret = dosth2();
    if (ret != 0)
    {
        goto error_handler;
    }   

    handle_logic2(&rinfo);

error_handler:

    rinfo.set_ret(ret);
    ReportTo(rinfo);

    return ret;
}

解决方案

好好设计吧,
goto的存在有时还是比较直观的

解决方案二:

一般错误处理可以用exception吧

int foo()
{
    ReportInfo rinfo;
    int ret = 0;

    try {
    ret = dosth1();
    if (ret != 0)
    {
        throw std::exception();
    }   

    handle_logic1(&rinfo);

    ret = dosth2();
    if (ret != 0)
    {
        throw std::exception();
    }   

    handle_logic2(&rinfo);

    }
        catch (std::exception e) {

    rinfo.set_ret(ret);
    ReportTo(rinfo);

    }
    return ret;
}

解决方案三:

异常有什么不好吗?若确定不要异常,可以把error处理语句做成个函数,调用后直接return。

解决方案四:

C++里面只能用exception来处理了,比较好实现。不然就保留goto,只要不混乱,也是可以理解的

解决方案五:

goto语句等你工作了就知道了,c++中绝对不会让你用的,否则老程序员会把你埋汰死,goto语句造成你的理解流程乱,c++中可以使用try catch,而且c++中没有什么逻辑是非goto语句不用的。

解决方案六:

你可以试试setjump()和longjump()函数其功能类似goto但比goto还强大

解决方案七:

goto可以返回

时间: 2024-09-10 10:19:13

异常处理-c++用什么替代goto处理错误返回的相关文章

接口-用C#如何定义 API 错误返回码

问题描述 用C#如何定义 API 错误返回码 就像微博接口一样,用户登录失败返回一个错误返回码 V2新版微博接口API将对每次失败请求,返回以下错误码中的一种: 10001 : 系统错误10002 : 服务端资源不可用10003 : 远程服务出错10005 : 该资源需要appkey拥有更高级的授权10006 : 缺少 source参数(appkey)10007 : 不支持的 MediaType (%s)10008 : 错误:参数错误,请参考API文档10009 : 任务过多,系统繁忙10010

ios-NSDateFormatter错误返回一年前日期

问题描述 NSDateFormatter错误返回一年前日期 代码: NSString *ds = @"2013-02-25"; NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"YYYY-MM-dd"]; NSDate* date = [formatter dateFromString:ds]; NSLog(@"%@",

springmvc-springMVC参数错误返回值

问题描述 springMVC参数错误返回值 我在用SpringMVC时,如果某些参数在请求时为必填参数,会用到(required = true),即:@RequestParam(value = ""id"" required = true) String idString name)但是这样的话如果id为空一请求就会报个Spring参数的错.后来我把required 改为false,然后在程序中判断传入参数是否为空,如果为空的话,手动拼接要返回的json字符串:{s

input视图-Struts2中action出现错误返回input的机制

问题描述 Struts2中action出现错误返回input的机制 2C 当action出现错误后,如何返回的input?通过哪个类返回的?希望大神们说的尽量详细点,先谢过了! 解决方案 链接:http://pan.baidu.com/s/1nuUL6OD 密码:igtz 解决方案二: return ""input"";或者return Action.Input;就OK了呀然后返回的就是input 如果你说的是显示错误信息的话调用addFieldError()方法时

iis 400错误 返回404错误

问题描述 iis 400错误 返回404错误 我用的是 2008 r2 系统 网站发布之后,如果地址比较特殊的话,就问返回400错误 如:http://***/askdfa.asdfasdf.a....sdf.asd.f.asf.as.fa.fhtm 我想让IIS返回404错误 要如何设置 解决方案 你那路径请求就是404错误,如果像弄成400错误你可以转一下到自己建的400错误界面 404/views/400.jsp 解决方案二: 状态码应该概不了,显示页面可以去iis配置.. 解决方案三:

错误返回信息问题

问题描述 如下,怎么将返回的英文错误信息转化成中文 解决方案 配置国际化文件.

错误返回-支付宝当面付申请支付

问题描述 支付宝当面付申请支付 支付宝当面付的代码, 返回 {"alipay_trade_refund_response":{"code":"40002","msg":"Invalid Arguments","sub_code":"isv.invalid-signature-type","sub_msg":"无效签名类型"},&

Java程序设计基础之异常处理

早期的编程语言(比如C语言)没有异常处理,通常是遇到错误返回一个特殊的值或设定一个标志,并以此判断是不是有错误产生.随着系统规模的不断扩大,这种错误处理已经成为创建大型可维护程序的障碍了.于是在一些语言中出现了异常处理机制,比如在Basic中的异常处理语句"on error goto",而Java则在C++基础上建立了新的异常处理机制. Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口.这种机制为复杂程序提供了强有力的控制方式.同时这些异常代码与&q

细看PEAR的错误处理

错误|错误处理 PEAR提供了强大的错误处理机制.这篇文章向你展示如何从这个系统中获益. 许多程序已经使用了PEAR的包.许多PHP程序员或多或少的熟悉了PEAR中的错误处理.但是这个机制并不局限于PEAR的包--所有人都能在他们的类和程序中使用这些方法. 这篇文章被分为两个部分:首先我们将看看类中用于错误处理的函数,然后我们将看看如何基于PEAR错误处理机制来处理错误. 我们的例子类称为cvs2db,它把数据从CSV文件插入到数据库的表中.因为数据可能是手写的,他们的数据应该在插入之前先得到验