处理生锈错误的方法

当Web编程或软件开发时,错误是不可避免的,并且可能出于多种原因发生,从错误的数据输入到网络中断,硬件故障……错误处理是一个开发过程。 ,报告和恢复系统失败以防止程序崩溃或数据损坏。

有效的错误处理在Rust中非常重要。它允许您创建可靠,健壮的应用程序来处理意外问题。 Rust的错误处理使您可以开发更安全,更灵活和可维护的程序。

生锈的错误类型

Rust具有丰富的类型系统,您可以根据其类型来用于专家错误处理。与传统错误处理方法相比,错误类型系统的优点无可否认。错误分类系统提供了类型安全性,提高的合成性,表现力和调试。

这是Rust中常见错误类型的列表:

  1. std :: io ::错误表示I/O错误,例如找不到文件,拒绝访问或已达到文件的末尾。
  2. std :: num :: parseinterror表示在整数解析字符串期间发生的错误。
  3. STD ::选项:: NoneRor代表空选项扩展期间的错误。
  4. std ::结果::结果 是一种通用结果类型,您可以用来表示任何错误。

每种错误都有其自己的方法和特征来以特定的方式处理它。

这是在文件中读取操作中错误处理的示例:

use std::fs::File; use std::io::Read; fn read_file(path: &str) -> Result 
        
        
        
        
        
        
        
        
        
        
         
         
         
         
         
         
         
         
         
          {     let mut file = File::open(path)?;     let mut contents = String::new();     file.read_to_string(&mut contents)?;     Ok(contents) } 
        
        
        
        
        
        
        
        
        
        

read_file函数在指定路径上读取文件的内容,并将其返回为字符串。它返回std :: io ::错误如果文件打开或阅读操作失败。操作员?传播错误并结果返回错误。

生锈中的错误处理机制

有助于生锈安全的主要特征是错误处理机构。 RUST中当前有4种错误校正机制:结果,选项,宏观恐慌!,错误。

结果和选项类型允许结构化错误处理。您可以使用恐慌!处理不可追回的错误。错误功能允许您定义自定义错误处理和类型。

类型结果

结果是一种内置类型,代表可能失败的类型操作的结果。它有两个变量:好的是一个成功,包含一个价值,犯错是故障,包含一个错误值。

您可以使用结果类型打开文件并读取其内容:

use std::fs::File; use std::io::prelude::*; fn read_file(file_path: &str) -> Result 
        
        
        
        
        
        
        
        
        
        
         
         
         
         
         
         
         
         
         
          {     let mut file = File::open(file_path)?;     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),     } } 
        
        
        
        
        
        
        
        
        
        

read_file函数采用文件路径并返回错误结果 。如果要读取或打开文件失败的操作,该功能将返回值犯错。否则,函数返回好的。在主要的功能,匹配声明处理结果值并根据文件操作的情况打印结果。

类型选项

选项是一种内置类型,代表有价值的存在或不存在。选项有两个变体。一些代表一个值,没有任何代表缺乏价值。

这是您可以使用选项类型获取向量的第一个元素的方法。

fn get_first_element(vec: Vec) -> Option {     if vec.is_empty() {         None     } else {         Some(vec.first().unwrap().clone())     } } fn main() {     let vec = vec![1, 2, 3];     let result = get_first_element(vec);     match result {         Some(element) => println!("{}", element),         None => println!("The vector is empty."),     } }

get_first_element功能返回类型选项。如果向量为空,则该函数将无返回。否则,该函数返回一些包含向量的第一个元素的功能。在主函数中,匹配语句处理选项值。如果选项对某些人进行评估,则该函数将打印第一个元素。否则,该函数输出一条消息,说明向量为空。

宏观恐慌!

宏观恐慌!在生锈中提供无法恢复的错误处理。打电话时!宏,它输出一个错误消息并终止程序。

这是如何使用恐慌的示例!指示该函数的参数无效。

fn divide(dividend: f64, divisor: f64) -> f64 {     if divisor == 0.0 {         panic!("The divisor cannot be zero.");     }     dividend / divisor } fn main() {     let result = divide(4.0, 0.0);     println!("{}", result); }

鸿沟功能检查除数是否为零。如果是0,则称为宏观恐慌!带有错误消息。否则,分隔函数会计算,然后返回结果。

主函数使用无效的参数调用分隔函数以触发恐慌!宏。

这是错误消息:

错误 。特征

错误是定义错误类型行为的内置属性。错误为定义样式和自定义错误处理提供了功能。

这是如何定义自定义错误类型的示例。这是一个没有发现问题的文件。

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 
        
        
        
        
        
        
        
        
        
        
         
         
         
         
         
         
         
         
         
          {     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),     } } 
        
        
        
        
        
        
        
        
        
        

自定义错误类型是structfileNotfound。此类型包含一个文件路径。FILENOTFOUND类型实现了显示属性要返回用户友好的错误消息和错误特征,以表明这是错误类型。

在read_file函数中,fileNotfound错误类型表示未找到错误的文件。 map_err方法转换std :: io ::错误fileNotfound。最后,盒子类型允许此功能返回错误的任何类型的性状实现。

主要功能调用read_file使用文件路径。如果找到文件,请输出内容到机。否则,它将输出错误消息。

这是一个不存在的文件的结果:

上面是解决锈蚀错误的常见方法。希望这篇文章对您有用。