找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 103|回复: 0

【Rust】定义自己的错误类型

[复制链接]
发表于 2025-3-16 15:57:01 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
Rust 定义自己的错误类型是为了方便使用 Result<T, E> 或者 Result<T, Box<dyn std::error::Error>>,以下例子可以作为参考。

rusterr.png

如图所示,我定义了我的错误类型 WaveFormError,它是个枚举,每一项枚举代表一种具体错误。别人使用我的库的时候,我的库只会返回这个错误类型,因此方便设计程序的遇到错误的条件处理流程。

为了能把这个错误装入 Box<dyn std::error::Error>,我们需要这一句:
  1. impl std::error::Error for 我的错误类型 {}
复制代码


为了在报错的时候,能够以文本的形式报错,我需要实现它的 fmt() 函数,因此要写以下代码:
  1. impl std::fmt::Display for 我的错误类型 {
  2.     fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
  3.        match self {
  4.            我的错误类型::枚举1 => write!(f, "错误原因1"),
  5.            我的错误类型::枚举2 => write!(f, "错误原因2"),
  6.            我的错误类型::枚举3(特殊理由) => write!(f, "错误原因3{特殊理由}"),
  7.            我的错误类型::枚举4 => write!(f, "错误原因4"),
  8.        }
  9.     }
  10. }
复制代码


在库里开发的时候,一般都用 Result<T, E> 方便调用者检测到错误后调用其它的方案解决问题;但是如果调用者根本不看文档而直接输入了离谱的参数,那就直接 panic 吧。
回复

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2025-3-29 12:46 , Processed in 0.043893 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表