载入中...
搜索中...
未找到
类 | 宏定义 | 类型定义 | 枚举 | 函数
RapidJSON error handling

## 类
struct | rapidjson::ParseResult
| Result of parsing (wraps ParseErrorCode) 更多...

## 宏定义
#define | RAPIDJSON_ERROR_CHARTYPE char
| Character type of error messages.
#define | RAPIDJSON_ERROR_STRING(x)
| Macro for converting string literial to RAPIDJSON_ERROR_CHARTYPE[].
#define | RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode, offset)
| Macro to indicate a parse error.
#define | RAPIDJSON_PARSE_ERROR(parseErrorCode, offset)
| (Internal) macro to indicate and handle a parse error.

## 类型定义
typedef const RAPIDJSON_ERROR_CHARTYPE *(* | rapidjson::GetParseErrorFunc) (ParseErrorCode)
| Function pointer type of GetParseError().

## 枚举
enum | rapidjson::ParseErrorCode { rapidjson::kParseErrorNone = 0 , rapidjson::kParseErrorDocumentEmpty , rapidjson::kParseErrorDocumentRootNotSingular , rapidjson::kParseErrorValueInvalid , rapidjson::kParseErrorObjectMissName , rapidjson::kParseErrorObjectMissColon , rapidjson::kParseErrorObjectMissCommaOrCurlyBracket , rapidjson::kParseErrorArrayMissCommaOrSquareBracket , rapidjson::kParseErrorStringUnicodeEscapeInvalidHex , rapidjson::kParseErrorStringUnicodeSurrogateInvalid , rapidjson::kParseErrorStringEscapeInvalid , rapidjson::kParseErrorStringMissQuotationMark , rapidjson::kParseErrorStringInvalidEncoding , rapidjson::kParseErrorNumberTooBig , rapidjson::kParseErrorNumberMissFraction , rapidjson::kParseErrorNumberMissExponent , rapidjson::kParseErrorTermination , rapidjson::kParseErrorUnspecificSyntaxError }
| Error code of parsing. 更多...
enum | rapidjson::PointerParseErrorCode { rapidjson::kPointerParseErrorNone = 0 , rapidjson::kPointerParseErrorTokenMustBeginWithSolidus , rapidjson::kPointerParseErrorInvalidEscape , rapidjson::kPointerParseErrorInvalidPercentEncoding , rapidjson::kPointerParseErrorCharacterMustPercentEncode }
| Error code of parsing. 更多...

## 函数
const RAPIDJSON_ERROR_CHARTYPE * | rapidjson::GetParseError_En (ParseErrorCode parseErrorCode)
| Maps error code of parsing into error message.

## 详细描述

## 类说明

## ◆ rapidjson::ParseResult

struct rapidjson::ParseResult

Result of parsing (wraps ParseErrorCode)

Document doc;
ParseResult ok = doc.Parse("[42]");
if (!ok) {
fprintf(stderr, "JSON parse error: %s (%u)",
GetParseError_En(ok.Code()), ok.Offset());
exit(EXIT_FAILURE);
}
rapidjson::GenericDocument
A document for parsing JSON text as DOM.
定义 fwd.h:119
rapidjson::GenericDocument::Parse
GenericDocument & Parse(const typename SourceEncoding::Ch *str)
Parse JSON text from a read-only string (with Encoding conversion)
定义 document.h:2219
rapidjson::ParseResult::Code
ParseErrorCode Code() const
Get the error code.
定义 error.h:114
rapidjson::ParseResult::Offset
size_t Offset() const
Get the error offset, if IsError(), 0 otherwise.
定义 error.h:116
rapidjson::GetParseError_En
const RAPIDJSON_ERROR_CHARTYPE * GetParseError_En(ParseErrorCode parseErrorCode)
Maps error code of parsing into error message.
定义 en.h:36
rapidjson::ParseResult
Result of parsing (wraps ParseErrorCode)
定义 error.h:106

参见
  GenericReader::Parse, GenericDocument::Parse

### Public 成员函数
| ParseResult ()
| Default constructor, no error.
| ParseResult (ParseErrorCode code, size_t offset)
| Constructor to set an error.
ParseErrorCode | Code () const
| Get the error code.
size_t | Offset () const
| Get the error offset, if IsError(), 0 otherwise.
| operator bool () const
| Conversion to `bool`, returns `true`, iff !IsError().
bool | IsError () const
| Whether the result is an error.
bool | operator== (const ParseResult &that) const
bool | operator== (ParseErrorCode code) const
void | Clear ()
| Reset error code.
void | Set (ParseErrorCode code, size_t offset=0)
| Update error code and offset.
### 友元
bool | operator== (ParseErrorCode code, const ParseResult &err)

## 宏定义说明

## ◆ RAPIDJSON_ERROR_CHARTYPE

#define RAPIDJSON_ERROR_CHARTYPE char

Character type of error messages.

The default character type is `char`. On Windows, user can define this macro as `TCHAR` for supporting both unicode/non-unicode settings.

## ◆ RAPIDJSON_ERROR_STRING

#define RAPIDJSON_ERROR_STRING | ( |  | x | ) |

值:
x

Macro for converting string literial to RAPIDJSON_ERROR_CHARTYPE[].

By default this conversion macro does nothing. On Windows, user can define this macro as `_T(x)` for supporting both unicode/non-unicode settings.

## ◆ RAPIDJSON_PARSE_ERROR

#define RAPIDJSON_PARSE_ERROR | ( |  | parseErrorCode,
|  |  | offset )

(Internal) macro to indicate and handle a parse error.

参数

  parseErrorCode | rapidjson::ParseErrorCode of the error
  offset | position of the error in JSON input (`size_t`)

Invokes RAPIDJSON_PARSE_ERROR_NORETURN and stops the parsing.

参见
  RAPIDJSON_PARSE_ERROR_NORETURN

## ◆ RAPIDJSON_PARSE_ERROR_NORETURN

#define RAPIDJSON_PARSE_ERROR_NORETURN | ( |  | parseErrorCode,
|  |  | offset )

值:
RAPIDJSON_MULTILINEMACRO_BEGIN \
RAPIDJSON_ASSERT(!HasParseError()); /* Error can only be assigned once */ \
SetParseError(parseErrorCode, offset); \
RAPIDJSON_MULTILINEMACRO_END

Macro to indicate a parse error.

参数

  parseErrorCode | rapidjson::ParseErrorCode of the error
  offset | position of the error in JSON input (`size_t`)

This macros can be used as a customization point for the internal error handling mechanism of RapidJSON.

A common usage model is to throw an exception instead of requiring the caller to explicitly check the rapidjson::GenericReader::Parse's return value:

#define RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode,offset) \
throw ParseException(parseErrorCode, #parseErrorCode, offset)
#include <stdexcept> // std::runtime_error
#include "rapidjson/error/error.h" // rapidjson::ParseResult
struct ParseException : std::runtime_error, rapidjson::ParseResult {
ParseException(rapidjson::ParseErrorCode code, const char* msg, size_t offset)
: std::runtime_error(msg), ParseResult(code, offset) {}
};
#include "rapidjson/reader.h"
error.h
rapidjson::ParseErrorCode
ParseErrorCode
Error code of parsing.
定义 error.h:64
reader.h

参见
  RAPIDJSON_PARSE_ERROR, rapidjson::GenericReader::Parse

## 类型定义说明

## ◆ GetParseErrorFunc

typedef const RAPIDJSON_ERROR_CHARTYPE *(* rapidjson::GetParseErrorFunc) (ParseErrorCode)

Function pointer type of GetParseError().

This is the prototype for `GetParseError_X()`, where `X` is a locale. User can dynamically change locale in runtime, e.g.:

GetParseErrorFunc GetParseError = GetParseError_En; // or whatever
const RAPIDJSON_ERROR_CHARTYPE* s = GetParseError(document.GetParseErrorCode());
rapidjson::GetParseErrorFunc
const RAPIDJSON_ERROR_CHARTYPE *(* GetParseErrorFunc)(ParseErrorCode)
Function pointer type of GetParseError().
定义 error.h:147
RAPIDJSON_ERROR_CHARTYPE
#define RAPIDJSON_ERROR_CHARTYPE
Character type of error messages.
定义 error.h:39

## 枚举类型说明

## ◆ ParseErrorCode

enum rapidjson::ParseErrorCode

Error code of parsing.

参见
  GenericReader::Parse, GenericReader::GetParseErrorCode

枚举值
kParseErrorNone | No error.
kParseErrorDocumentEmpty | The document is empty.
kParseErrorDocumentRootNotSingular | The document root must not follow by other values.
kParseErrorValueInvalid | Invalid value.
kParseErrorObjectMissName | Missing a name for object member.
kParseErrorObjectMissColon | Missing a colon after a name of object member.
kParseErrorObjectMissCommaOrCurlyBracket | Missing a comma or '}' after an object member.
kParseErrorArrayMissCommaOrSquareBracket | Missing a comma or ']' after an array element.
kParseErrorStringUnicodeEscapeInvalidHex | Incorrect hex digit after \u escape in string.
kParseErrorStringUnicodeSurrogateInvalid | The surrogate pair in string is invalid.
kParseErrorStringEscapeInvalid | Invalid escape character in string.
kParseErrorStringMissQuotationMark | Missing a closing quotation mark in string.
kParseErrorStringInvalidEncoding | Invalid encoding in string.
kParseErrorNumberTooBig | Number too big to be stored in double.
kParseErrorNumberMissFraction | Miss fraction part in number.
kParseErrorNumberMissExponent | Miss exponent in number.
kParseErrorTermination | Parsing was terminated.
kParseErrorUnspecificSyntaxError | Unspecific syntax error.

## ◆ PointerParseErrorCode

enum rapidjson::PointerParseErrorCode

Error code of parsing.

参见
  GenericPointer::GenericPointer, GenericPointer::GetParseErrorCode

枚举值
kPointerParseErrorNone | The parse is successful
kPointerParseErrorTokenMustBeginWithSolidus | A token must begin with a '/'
kPointerParseErrorInvalidEscape | Invalid escape
kPointerParseErrorInvalidPercentEncoding | Invalid percent encoding in URI fragment
kPointerParseErrorCharacterMustPercentEncode | A character must percent encoded in URI fragment

## 函数说明

## ◆ GetParseError_En()

const RAPIDJSON_ERROR_CHARTYPE * rapidjson::GetParseError_En | ( | ParseErrorCode | parseErrorCode | ) |
| inline

Maps error code of parsing into error message.

参数

  parseErrorCode | Error code obtained in parsing.

返回
  the error message.

注解
  User can make a copy of this function for localization. Using switch-case is safer for future modification of error codes.