mirror of
https://github.com/boostorg/openmethod.git
synced 2026-01-19 16:32:12 +00:00
61 lines
1.1 KiB
Plaintext
61 lines
1.1 KiB
Plaintext
|
|
## error_handler
|
|
|
|
### Synopsis
|
|
|
|
Defined in <boost/openmethod/policies/basic_policy.hpp>.
|
|
|
|
```c++
|
|
|
|
namespace boost::openmethod {
|
|
|
|
namespace policies {
|
|
|
|
struct error_handler;
|
|
|
|
}
|
|
|
|
struct openmethod_error {};
|
|
|
|
struct not_implemented_error : openmethod_error {
|
|
type_id method;
|
|
std::size_t arity;
|
|
static constexpr std::size_t max_types = 16;
|
|
type_id types[max_types];
|
|
};
|
|
|
|
struct unknown_class_error : openmethod_error {
|
|
type_id type;
|
|
};
|
|
|
|
struct hash_search_error : openmethod_error {
|
|
std::size_t attempts;
|
|
std::size_t buckets;
|
|
};
|
|
|
|
struct type_mismatch_error : openmethod_error {
|
|
type_id type;
|
|
};
|
|
|
|
}
|
|
```
|
|
|
|
### Description
|
|
|
|
`error_handler` is a policy that handles errors.
|
|
|
|
When an error is encountered, either during `initialize` or method dispatch, the
|
|
program is terminated via a call to `abort`. If this policy is present in the
|
|
policy, its `error` function is called with an error object. It can prevent
|
|
termination by throwing an exception.
|
|
|
|
### Requirements
|
|
|
|
Implementations of `error_handler` must provide the following functions:
|
|
|
|
#### error
|
|
|
|
```c++
|
|
static auto error(const T&) -> void;
|
|
```
|