Skip to main content

crawlkit_core/
error.rs

1//! 框架统一的错误类型定义
2
3use thiserror::Error;
4
5/// 框架统一错误类型
6///
7/// 覆盖 HTTP 请求、URL 解析、HTML 解析、回调执行等场景。
8#[derive(Error, Debug)]
9pub enum CrawlError {
10    /// HTTP 请求失败
11    #[error("HTTP 请求失败: {0}")]
12    Http(String),
13
14    /// URL 解析失败
15    #[error("URL 解析失败: {0}")]
16    Url(#[from] url::ParseError),
17
18    /// HTML 解析失败
19    #[error("HTML 解析失败: {0}")]
20    Html(String),
21
22    /// 回调执行错误
23    #[error("回调执行出错: {0}")]
24    Callback(String),
25
26    /// IO 错误
27    #[error("IO 错误: {0}")]
28    Io(#[from] std::io::Error),
29
30    /// CSS 选择器解析错误
31    #[error("CSS 选择器解析失败 '{selector}': {message}")]
32    Selector { selector: String, message: String },
33
34    /// 可读性提取错误
35    #[error("可读性提取失败: {0}")]
36    Readability(String),
37
38    /// 配置错误
39    #[error("配置错误: {0}")]
40    Config(String),
41
42    /// 所有请求器均失败
43    #[error("所有请求器均失败: {0}")]
44    AllFetchersFailed(String),
45
46    /// 锁中毒
47    #[error("锁错误: {0}")]
48    Lock(String),
49}
50
51/// 框架统一的 Result 别名
52pub type Result<T> = std::result::Result<T, CrawlError>;