dm_database_parser_sqllog/error.rs
1use std::num::{ParseFloatError, ParseIntError};
2use thiserror::Error;
3
4/// 解析错误类型
5///
6/// 说明:该枚举表示在将日志字段从字符串解析为数字或其他期望格式时可能发生的错误。
7/// 我们把常见的错误包装成特定变体,便于上层调用者进行匹配、报告或恢复处理。
8/// - `MissingFields(usize)`:当解析时发现字段数量不足(例如缺少期望的元数据项)时使用;携带期望字段数用于诊断;
9/// - `Int(ParseIntError)`:整数解析失败的包装(保留原始 ParseIntError 以便追踪来源);
10/// - `Float(ParseFloatError)`:浮点数解析失败的包装;
11/// - `InvalidFormat`:通用格式错误,用于无法归类或发现奇怪格式时的占位错误。
12#[derive(Debug, Error)]
13pub enum ParseError {
14 #[error("missing fields: expected {0} fields")]
15 MissingFields(usize),
16
17 #[error("int parse error: {0}")]
18 Int(#[source] ParseIntError),
19
20 #[error("float parse error: {0}")]
21 Float(#[source] ParseFloatError),
22
23 #[error("invalid format")]
24 InvalidFormat,
25}