Files
BitLogger/docs/api/config-error.md
T
2026-06-13 20:56:46 +08:00

78 lines
2.3 KiB
Markdown

---
name: config-error
group: api
category: config
update-time: 20260613
description: Public config parsing error alias used by synchronous config-loading helpers.
key-word:
- config
- error
- alias
- public
---
## Config-error
`ConfigError` is the public error type raised by synchronous config parsing helpers. It is a direct alias to the internal config error definition and currently exposes a single structured error case for invalid input.
### Interface
```moonbit
pub type ConfigError = @utils.ConfigError
```
#### output
- `ConfigError` - Public config parsing error type with the case `InvalidConfig(String)`.
### Explanation
Detailed rules explaining key parameters and behaviors
- This is a type alias, not a separate public wrapper.
- The current public error case is `ConfigError::InvalidConfig(message)`.
- The alias is used by parsing helpers such as `parse_logger_config_text(...)` and by lower-level config parsing routines beneath it.
- Error messages describe concrete schema problems such as invalid JSON, wrong value types, unsupported enum text, or missing required values for a chosen sink kind.
### How to Use
Here are some specific examples provided.
#### When Need To Catch Config Parse Failures
When raw config text should be validated before boot:
```moonbit
let config = parse_logger_config_text(raw) catch {
err if err is ConfigError => {
println(err.to_string())
return
}
}
```
In this example, the caller keeps config validation failures separate from normal runtime work.
#### When Need To Surface A Clear Parse Message
When tooling should report why config input was rejected:
```moonbit
ignore(parse_logger_config_text("{bad json}")) catch {
err => println(err.to_string())
}
```
In this example, the error carries a concrete message instead of failing silently.
### Error Case
e.g.:
- Invalid JSON input raises `ConfigError::InvalidConfig(...)`.
- Wrong field types, unsupported level text, unsupported sink kinds, or an empty `path` for a file sink also raise `ConfigError::InvalidConfig(...)`.
### Notes
1. This alias currently belongs to the synchronous config-loading path in `bitlogger`.
2. Async config parsers in `bitlogger_async` currently raise the generic failure surface used by that package instead of `ConfigError`.