错误处理

本章代码在02/错误处理分支。

本章代码在02/错误处理分支。

我们将定义自己的错误类型,在项目内都将使用该自定义错误。同时,我们还会将对该自定义错误实现IntoResponse,以便在 handler 中作为返回值使用。

mod error;

接着声明自定义错误的结构体和相关的枚举:

/// 错误的类型
pub enum AppErrorType {
    /// 数据库错误
    DbType,
    /// 未找到
    NotFound,
}

/// 应用错误
pub struct AppError {
    /// 错误信息
    pub message: Option<String>,
    /// 错误原因(上一级的错误)
    pub cause: Option<String>,
    /// 错误类型
    pub error_type: AppErrorType,
}

定义自己的Result

Rust 允许每个项目定义自己的Result,需要注意的是,每个项目只能定义一次。在src/main.rs定义我们自己的Result

/// 定义自己的 Result
type Result<T> = std::result::Result<T, error::AppError>;

下一章我们将自定义响应。

要查看完整内容,请先登录