
扯淡
首先我们知道,(正常情况下)C语言是没有异常的,在C的世界中通常用返回错误码的形式判断是否出错.C++起初是由C发展而来,继承了这个特性.后来由于C++恐怖的兼收并蓄的能力,异常也成为了C++的一部分,但是与C子集的部分互不干扰.
Rust的错误处理
在rust中,如果我们可能得到一个值或得不到值,可以使用Option<T>作为操作结果,然后用模式匹配判断是否得到了值.
|
|
模式匹配获得结果
|
|
如果要得到一个返回值或一个错误,则可以用Result<T, E>的格式
|
|
同样可以用模式匹配(略)
除此之外Rust还提供了unwrap, unwrap_or, map等”糖”来简化代码
在C++中实现Result<T, E>
在Github上找到了一个实现result,实现了map,unwrap, unwrapErr等操作,但是我估计用不到,所以我仍打算自己实现(抄)一个Result<T, E>.
但是由于C++没有模式匹配,只能通过isOk,isErr等来判断
待续
本博的原创作品作品采用知识共享署名 2.5 中国大陆许可协议 进行许可,欢迎转载,但转载请注明出处,并保持转载后文章内容的完整。
本文链接:http://fallenwood.github.io/2017/02/22/cpp-11-results/




近期评论