Rust 语言逆天的错误处理方式

写了几天 Rust 之后,不光被它的 Ownership, Lifetime 折磨的死去活来,还碰上个奇怪的错误处理方式。如果让程序员在 Java, C/C++, Python, Ruby, Scala, Go,甚至是 Lisp 语言之间换着学,那还都不是难事,但是拉个人去弄 Rust 就要命了。

有垃圾回收的语言基本就是想怎么写都成,程序运行时也不会出太大的事; 像 C/C++  自己管理内存的语言写出来的程序通过编译也容易,只是执行时会有内存泄漏或地址越界。而选择号称性能与安全兼备的 Rust 语言的话,按照正常思维逻辑写出来的代码能通过编译就是最幸福的事。碰到关于 Ownership, Lifetime 之类的编译问题基本当前的 AI 也无解。

所以现在还能快乐的用 Java, Python 写代码的时光应该好好的去珍惜。

就算能侥幸的应付 Ownership, Lifetime 的问题,Rust 错误处理方式也会让人抓狂,起初大量的用 unwrap() 忽略错误,用多了也会觉得不是一回事。

主流的语言都是采纳 try/catch 方式处理异常方式,异常在栈中向上传播,想在哪一层捕获异常都行,所以才可能在某处集中的处理异常,也让程序结果返回与异常处理得已分离。 阅读全文 >>