当前位置: 首页 > 知识库问答 >
问题:

rust 执行 expect 函数程序就退出了吗?还是会继续执行?

狄望
2023-04-20
use std::io;

fn main() {
    println!("Please enter a number:");

    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");

    let num: i32 = input.trim().parse().expect("Invalid input");

    println!("You entered: {}", num);
}

对于上面的代码,如果执行 read_line 的时候出错,抛出的异常会传递给 expect("Failed to read line") 处理是吗?

expect("Failed to read line") 的作用就是接收到一个异常,然后 print "Failed to read line" 是吗?

expect("Failed to read line") 执行后,程序就 exit 了?还是会继续执行 let num: i32 = input.trim().parse().expect("Invalid input");

共有1个答案

汝彭薄
2023-04-20

对。直接抛出 panic 然后就退出了。

对于一个 Result<T, E> 而言:

r.expect('msg');

// 就等于

match r {
    Ok(result) => {
        // result 即 r.unwrap();
    },
    Err(error) => {
        panic!('msg', error),
    }
};

跟 Golang 里的错误处理类似,一个函数的返回值也都会包装成真实返回值和异常两部分。只不过 Rust 在写法上跟简练一些,不至于有多个函数执行时会像 Golang 那样 if err != nil 漫天乱飞:

result, err := doSomething()
if err != nil {
    panic(err)
} else {
    fmt.Println(result)
}
 类似资料:
  • 我制作了一个程序,要求用户输入5位数字,然后程序将查找这些数字的总和。我想知道我怎样才能使程序在计算一次之后一遍又一遍地要求一个数字。我希望用户再试一次,直到他自己想退出。

  • 本文向大家介绍深入剖析浏览器退出之后php还会继续执行么,包括了深入剖析浏览器退出之后php还会继续执行么的使用技巧和注意事项,需要的朋友参考一下 前提:这里说的是典型的lnmp结构,nginx+php-fpm的模式 如果我有个php程序执行地非常慢,甚至于在代码中sleep(),然后浏览器连接上服务的时候,会启动一个php-fpm进程,但是这个时候,如果浏览器关闭了,那么请问,这个时候服务端的这

  • 问题内容: 我的示例代码如下: 我的要求是,在捕获到异常之后,我要处理数组的其余元素。我怎样才能做到这一点? 问题答案: 您的代码应如下所示:

  • 问题内容: 我们有一个基于石英的调度程序应用程序,该应用程序每分钟运行约1000个作业,每分钟的秒数均匀分布,即每秒约16-17个作业。理想情况下,这16-17个作业应同时触发,但是该作业的execute方法的第一个语句(仅记录执行时间)非常晚。例如,假设我们从05:00到05:04每分钟安排1000个作业。因此,理想情况下,计划在05:03:50进行的作业应该在05:03:50记录了execut

  • 本文向大家介绍python实现按任意键继续执行程序,包括了python实现按任意键继续执行程序的使用技巧和注意事项,需要的朋友参考一下 在windows下写bat的时候,通过pause命令,可以暂停程序运行,例如经常见的程序会在终端提示”按任意键继续……”,用户在终端回车后程序可以接着运行,这个功能有多大用途今天暂且不说,但我觉得应该有很多人也想在python下实现这个功能,这样当自己写的pyth

  • 我们有一个基于quartz的调度程序应用程序,每分钟运行大约1000个作业,这些作业平均分布在每分钟的几秒钟内,即每秒大约16-17个作业。理想情况下,这16-17个作业应该同时触发,但是我们的第一条语句,它只是记录执行的时间,任务的execute方法调用得很晚。假设从05:00到05:04,我们每分钟安排1000个工作。因此,理想情况下,计划在05:03:50的作业应该在05:03:50记录ex