错误处理

neujson 内置了这几种错误类型:

  • neujson::error::OK

    ok

  • neujson::error::ROOT_NOT_SINGULAR

    root not singular,例如:null x01230x00x123

  • neujson::error::BAD_VALUE

    bad value,例如:nul?+0+1.1231.INFinfNANnan[1,]["a", nul]

  • neujson::error::EXPECT_VALUE

    expect value,例如:""" "

  • neujson::error::NUMBER_TOO_BIG

    number too big,例如:1e309-1e309

  • neujson::error::BAD_STRING_CHAR

    bad character,例如:ascii 0x01-0x1f

  • neujson::error::BAD_STRING_ESCAPE

    bad escape,例如:\v\'\0\x12、只有: \"\\\/\b\f\n\r\t 是正确的

  • neujson::error::BAD_UNICODE_HEX

    bad unicode hex,例如:\u\u/000uG000\u 123

  • neujson::error::BAD_UNICODE_SURROGATE

    bad unicode surrogate,例如:\uD800\uDBFF\uD800\uE000

  • neujson::error::MISS_QUOTATION_MARK

    miss quotation mark,例如:""abc

  • neujson::error::MISS_COMMA_OR_SQUARE_BRACKET

    miss comma or square bracket,例如:[1[1}[1 2[[]

  • neujson::error::MISS_KEY

    miss key,例如:{:1,{1:1,{true:1,{null:1,{[]:1,{{}:1,{"a":1,

  • neujson::error::MISS_COLON

    miss colon,例如:{"a"}{"a","b"}

  • neujson::error::MISS_COMMA_OR_CURLY_BRACKET

    miss comma or curly bracket,例如:{"a":1{"a":1]{"a":1 "b"{"a":{}

  • neujson::error::USER_STOPPED

    user stopped parse,例如:用户自定义的 Handler 没有全部定义

neujson 提供了错误码与错误信息转换的函数:neujson::parseErrorStr(error::ParseError _err),该函数会输出一个包含错误信息的 char *

输出:

#include <cstdio>

#include "neujson/document.h"

int main() {
  neujson::Document doc;
  auto err = doc.parse(R"(
{
    "a":1,
    "b"
}
)");

  if (err != neujson::error::PARSE_OK) {
    puts(neujson::parseErrorStr(err));
    return EXIT_FAILURE;
  }
}

输出:

miss colon
上次更新:
贡献者: HominSu