全面讲解在Rust中处理错误的有效方法( 二 )


下面是错误信息:
 

全面讲解在Rust中处理错误的有效方法

文章插图
 
4.Error特征Error特征是定义错误类型行为的内置特征 。Error特征提供了定义自定义错误类型和自定义错误处理的功能 。
下面是定义自定义错误类型的示例,该错误类型表示文件未找到错误 。
use std::error::Error;use std::fmt;use std::io::Read;#[derive(Debug)]struct FileNotFound(String);impl fmt::Display for FileNotFound {fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {write!(f, "File not found: {}", self.0)}}impl Error for FileNotFound {}fn read_file(file_path: &str) -> Result<String, Box<dyn Error>> {let mut file = std::fs::File::open(file_path).map_err(|e| FileNotFound(format!("{}", e)))?;let mut contents = String::new();file.read_to_string(&mut contents)?;Ok(contents)}fn main() {let result = read_file("file.txt");match result {Ok(contents) => println!("{}", contents),Err(e) => println!("Error: {}", e),自定义错误类型是FileNotFound构件 。该类型含有文件路径,FileNotFound类型实现了Display特征以返回对用户友好的错误消息,并实现了Error特征以表明这是错误类型 。
在read_file函数中,FileNotFound错误类型表示文件未找到错误,map_err方法将std::io:: Error转换成FileNotFound错误 。最后,Box<dyn Error>类型允许函数返回实现Error特征的任何类型 。
main函数调用带有文件路径的read_file函数;如果找到文件,将其内容打印输出到控制台 。不然,它打印输出错误消息 。
下面是一个不存在的文件的结果:
 
全面讲解在Rust中处理错误的有效方法

文章插图
 
三、可以依靠Rust的所有权模型来确保程序安全
与Rust出色的错误处理机制相结合,Rust还利用了所有权模型来帮助确保程序是内存安全的 。
Rust在程序运行前的编译时,使用借用检查器确保所有权规则 。
原文链接:https://www.makeuseof.com/rust-error-handling-Approaches/

【全面讲解在Rust中处理错误的有效方法】


推荐阅读