Rust & Python & Go 错误处理对比
引言
很多编程语言中都有特定的错误处理方式,大体上来说,主要分为如下两类:
- 异常机制 try-catch(代表语言:Java/JavaScript/Python 等);
- 返回错误 return-error(Go/Rust 等)。
由于我们主要使用的语言是 Python 和 Go,所以上述两种错误方式都有一定的实践经验,就不多赘述了。今天主要来看看 Rust 中错误处理方式,学习另外一种优雅简洁的错误处理思路。在 Rust 中,我们主要还是依靠标准库提供的一些组合子、宏以及 ?
操作符来逐步减少样板代码的,从而让代码更加紧凑,我们只需要关注核心业务逻辑即可,让错误的传递更加轻松简单。当然,讲得不一定对,仅供参考。
在开始之前,我们先来回顾下以上两种错误处理方式的优缺点,做个简单的对比:
在 Rust 中,提供了如下几种方式来处理错误或者异常:
Talent Plan 之 Rust 网络编程(二):预备知识
引言
惭愧,时隔两个月继续本系列课程的学习,之前因为一些工作上的事情耽搁了很久。本节课程的学习素材非常丰富,也有很多是我们在编写 key-value 数据库前需要掌握的思想。
在资料学习部分,我们首先需要了解下什么是日志结构存储(Log structured storage),接下来需要掌握在 Rust 中如何以优雅的方式处理错误,最后还需要学习下 std::collections
中的一些数据结构和 std::io
中的常用函数。
在练习题部分,我们还将接触 Rust 中特别常用的序列化和反序列化框架 serde
,并使用该框架完成 json
, ron
和 bson
相关的练习,掌握它的基本用法。
Rust 错误处理
引言
本文内容主要翻译自 Andrew Gallant 的文章 Error Handling in Rust。
如同大多数的编程语言,Rust 中也需要通过特定的方式处理错误。众所周知,目前常见的错误处理方式主要分为两种:
- 异常机制(C#/Java/Python 等);
- 返回错误(Go/Rust 等)。
本文将会综合全面地介绍 Rust 中的错误处理,通过循序渐进地引导,带领初学者扎实地掌握这块知识。如果我们不熟悉标准库的话,我们可能会使用较为愚蠢的方式处理错误,这种会比较繁琐,产生很多样板代码。所以本文会演示如何借助标准库让错误处理更加优雅和简洁。
Talent Plan 之 Rust 网络编程(一):Rust 工具箱
引言
经过 上一节 的学习,相信对于 Cargo、Rust API 文档编写规范、命令行工具编写都有了初步认识,没有掌握也没关系。本节将会继续深入学习和实践,我们将采用 测试驱动开发(Test-Driven Development, TDD) 的方式编写一个简单的内存 key-value 存储库,以及一个命令行工具用于接收和处理增删查命令,并且最终还要能够通过所有单元测试。