首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rust 编程视频教程对应讲解内容-传播错误

讲解内容

1、当编写一个函数,但是该函数可能会失败,此时除了在函数中处理错误外,还可以将错误传给调用者,让调用者决定如何处理,这被称为传播错误。

例子:

use std::io;

use std::io::Read;

use std::fs::File;

fn read_username_from_file() -> Result {

let f = File::open("hello.txt");

let mut f = match f {

Ok(file) => file,

Err(e) => return Err(e),

};

let mut s = String::new();

match f.read_to_string(&mut s) {

Ok(_) => Ok(s),

Err(e) => Err(e),

}

}

2、传播错误的简写方式,提倡的方式

use std::io;

use std::io::Read;

use std::fs::File;

fn read_username_from_file() -> Result {

let mut f = File::open("hello.txt")?;

let mut s = String::new();

f.read_to_string(&mut s)?;

Ok(s)

}

3、更进一步的简写

use std::io;

use std::io::Read;

use std::fs::File;

fn read_username_from_file() -> Result {

let mut s = String::new();

File::open("hello.txt")?.read_to_string(&mut s)?;

Ok(s)

}

//说明1:rust提供了fs::read_to_string函数

use std::io;

use std::fs;

fn read_username_from_file() -> Result {

fs::read_to_string("hello.txt")

}

//说明2:?运算符被用于返回Result的函数,如果不是返回Result的函数,用?会报错

3、什么时候用panic!,什么时候用Result

(1)示例、代码原型和测试适合panic,也就是直接panic!、unwrap、expect的方式

(2)实际项目中应该多使用Result

4、Option和Result

Option是可能存在空值,而Result是可能存在错误

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200115A0SBIC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券