解析配置或xml文件有哪些可能的例外?

时间:2011-05-12 11:08:10

标签: c++

如何在解析文件时处理所有可能的异常?

我的代码有一个抽象基类和两个派生类(XML和config),这些类基于我编写的用于解析的代码的文件类型。

2 个答案:

答案 0 :(得分:2)

我只有一个例外:

#include <stdexcept>

namespace MyNameSpace
{
    class ParserException: public std::runtime_error
    {
        public:
            ParserException(std::string const& msg)
                : runtime_error(msg)
            {}
    };
};

如果出现问题,请使用适当的错误消息抛出ParserException。如果存在一种特殊情况,用户实际上可以从中恢复,那么就为这种情况创建一个特定的异常(从ParserException派生)。

  • 为每个错误创建一个新的异常类。
  • 如果您确实为解析器创建了更多例外。然后从ParserException派生它们,以便它们可以作为一个组进行处理。
  • 如果发生通用事件。使用标准例外之一。

用法:

if (bad)
{   throw ParserException("Something Bad Happened");
}

答案 1 :(得分:0)

必须有很多例外,其中许多可能不太可能发生,但显而易见的可能是: -

  • 文件中没有数据(因任何原因无法加载)
  • 无效的XML
  • 意外的数据格式(虽然这应该通过适当的解析来处理)
  • XML中的非法字符(未正确转义)
  • 数据中的扩展Unicode字符(应在解析时优雅地处理)
  • Parser内存不足

这是一个开始......!