Error
Usage
1throw Error(ErrorCategory::Syntax, u8"my message");
1auto location = ...
2throw Error(ErrorCategory::Syntax, u8"my message", location);
1try {
2 // ...
3} catch (const std::system_error &error) {
4 throw Error(ErrorCategory::IO, u8"System error", error.code());
5}
1Location location = ...
2NamePath namePath = ...
3std::filesystem::path filePath = ...
4std::error_code errorCode = ...
5throw Error(ErrorCategory::Syntax, u8"my message", location, namePath, filePath, errorCode);
1try {
2 // ... parse document, etc ...
3} catch (const Error &error) {
4 std::cerr << error.toText().toCharString() << "\n";
5 exit(1);
6}
Interface
-
class Error : public std::exception
The exception for all errors.
- Tested:
ErrorTest
Public Functions
-
template<typename Msg>
inline Error(const ErrorCategory category, Msg &&message) noexcept Create a new error with the given message.
- Parameters:
category – The error category.
message – The string with the message.
-
template<typename Msg, typename ...Args>
inline Error(const ErrorCategory category, Msg &&message, Args&&... args) noexcept Create a new error with the given message, location, and file path.
- Parameters:
category – The error category.
message – The string with the message.
args – Optional arguments for the error message.
-
~Error() noexcept override = default
Default destructor.
-
inline ErrorCategory category() const noexcept
Get the error category.
- Returns:
The error category.
-
inline Location location() const noexcept
Access the location.
- Returns:
The location, or an undefined location if none was set.
-
inline NamePath namePath() const noexcept
Access the name-path.
- Returns:
The name-path, or an empty name-path if none was set.
-
inline std::filesystem::path filePath() const noexcept
Access the file path.
- Returns:
The file path, or an empty file path if none was set.
-
inline std::error_code errorCode() const noexcept
Access the system-error code.
- Returns:
The system-error code, or an undefined one if none was set.
-
Error withLocation(const Location &location) const noexcept
Create a copy with the given location added or replaced.
- Returns:
A copy of this error, with the location added or replaced.
-
String toText() const noexcept
Convert this error into a text representation.
This method creates a text representation of this error message that is safe to be used in logs, console-outputs, or user-interfaces. Exceedingly long paths and texts are trimmed and control characters are escaped.
- Returns:
The string representation of this error.
-
const char *what() const noexcept override
Return a null-terminated string describing the error (std::exception interface).
- Returns:
A C-string with the error message; suitable for logging or exception handling.
-
class ErrorCategory
The category of an error.
- Tested:
ErrorCategoryTest
Public Types
-
enum Enum
The underlying enum type representing distinct categories of errors.
Values:
-
enumerator IO
A problem occurred while reading data from an I/O stream.
-
enumerator Encoding
The document contains a problem with UTF-8 encoding.
-
enumerator UnexpectedEnd
The document ended unexpectedly.
-
enumerator Character
The document contains a control character that is not allowed.
-
enumerator Syntax
The document has a syntax error.
-
enumerator LimitExceeded
The size of a name, text, or buffer exceeds the permitted limit.
-
enumerator NameConflict
The same name has already been defined earlier in the document.
-
enumerator Indentation
The indentation of a continued line does not match the previous line.
-
enumerator Unsupported
The requested feature/version is not supported by this parser.
-
enumerator Signature
The document’s signature was rejected.
-
enumerator Access
The document was rejected due to an access check.
-
enumerator Validation
The document did not meet one of the validation rules.
-
enumerator Internal
The parser encountered an unexpected internal error.
-
enumerator ValueNotFound
A value with a given name-path couldn’t be found.
-
enumerator TypeMismatch
A value exists but has the wrong type for a conversion.
-
enumerator IO
Public Functions
-
constexpr ErrorCategory() = default
Create an internal error category.
-
inline constexpr ErrorCategory(Enum value) noexcept
Create a new error category.
- Parameters:
value – The error category enum.
-
~ErrorCategory() = default
Default destructor.
-
ErrorCategory(const ErrorCategory&) = default
Default copy constructor.
-
ErrorCategory &operator=(const ErrorCategory&) = default
Default copy assignment.
-
inline ErrorCategory &operator=(Enum value) noexcept
Assign a new enum value to this error category.
- Parameters:
value – The enum value to assign.
- Returns:
Reference to this error category.
-
inline explicit constexpr operator Enum() const noexcept
Convert to the underlying enum value.
- Returns:
The enum representation of this error category.
-
inline explicit operator int() const noexcept
Convert to the integer error code.
- Returns:
The numeric code of this error category.
-
const String &toText() const noexcept
Get the text representation of this error category.
- Returns:
A text representation of this error category.
-
int toCode() const noexcept
Get the code for this error category.
- Returns:
The error code.