首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将文本文件解析为对象时处理错误

将文本文件解析为对象时处理错误
EN

Stack Overflow用户
提问于 2015-07-01 23:55:16
回答 1查看 216关注 0票数 0

我想解析一个简单的文本文件,并根据它包含的数据创建一个对象。为此,我使用了C++11 (而且我不太流利)。

如果出现任何类型的错误(例如缺少文件或无效文本),我希望告诉调用者我的解析函数出了什么问题,并提供了信息,比如发生了什么样的错误以及文件中的位置。

我不认为错误是在解析过程中发生的,所以异常似乎不是解决问题的方法。

我想返回一个包含所有信息的struct,包括结果解析的对象,以防成功:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct ParsingResult
{
    bool success;
    int errorCode;
    int errorLine;
    ParsedObject object;
}

但是,我不相信这个解决方案,因为如果出现错误,我仍然必须提供一个ParsedObject。当然,我可以为此定义一个默认的构造函数,但从本质上讲,只有在解析成功时,ParsedObject才有意义。

我可以将ParsedObject更改为ParsedObject*,但在没有必要时不愿意使用指针,我想知道这是否可以避免。

我的问题是:你能为这个问题提出更好的解决方案吗?那是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-02 00:07:39

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct Obj
{
    // your object from the data...
}

struct ParseError
{
    int errorCode;
    int errorLine;
}

class Parser
{
    ParseError m_error;

    // other things
public:
    bool parse(const std::string& filename, Obj& parsedObject)
    {
         // Open file, etc...
         //parsedObject.property1 = some_value;

         // if something is wrong, set m_error and return false;
         // return true if ok
    } 

    ParseError getLastError() { return m_error; }   
}


// in your code
Parser p;
Obj o;
if(!p.parse("filename", o))
{
    // ParseError = p.getLastError();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31178655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文