V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Kasumi20
V2EX  ›  Rust

Rust 最优雅的异常处理方式是什么?

  •  
  •   Kasumi20 · 2022-03-27 01:02:31 +08:00 · 2393 次点击
    这是一个创建于 973 天前的主题,其中的信息可能已经有所发展或是发生改变。

    相比会产生嵌套地狱的 match 来说, 我更喜欢 if 这种方式, 有没有什么更优雅的方式?

    fn serv(host: &str, port: u16) {
        let server = std::net::TcpListener::bind(format!("{}:{}", host, port));
        if server.is_err() {
            println!("{}", server.unwrap_err());
            return;
        }
        let server = server.unwrap();
        ...
    }
    
    6 条回复    2022-04-03 23:49:20 +08:00
    Kilerd
        1
    Kilerd  
       2022-03-27 01:37:17 +08:00 via iPhone
    lib 用 thiserror ,bin 用 anyhow
    jedrek
        2
    jedrek  
       2022-03-27 11:53:17 +08:00
    不处理的异常和 None 就返回,用 ? 精简代码
    1more
        3
    1more  
       2022-03-27 16:06:57 +08:00
    我也想问,等一个答案
    dorentus
        4
    dorentus  
       2022-03-28 07:02:32 +08:00 via iPhone
    dorentus
        5
    dorentus  
       2022-03-28 09:50:15 +08:00   ❤️ 1
    DonkeyBenjamin
        6
    DonkeyBenjamin  
       2022-04-03 23:49:20 +08:00
    1. ripgrep 作者的看法: https://blog.burntsushi.net/rust-error-handling/
    2. 参考 rust for rustaceans

    总而言之,application -> anyhow
    library -> thiserror
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   967 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 20:15 · PVG 04:15 · LAX 12:15 · JFK 15:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.