当前位置: 首页 > article >正文

Rust 语言学习笔记(四)

试手了一下 Rust, 发现止今所学知识尚浅,不少情况处理起来很是茫然,比如经常得到的值是 Result 或 Option, 有时候要 .unwrap(), 有时得后面加个问号,或 .await。还有从自定义函数里返回一个引用都不容易,到处是 move, borrow, owner, lifetime 之类的错误信息。所以说,快充五分钟还真不敢上路,继续学习 Rust 的 Result, 说起它又必须与 Rust 的错误处理联系起来。

编程语言在处理错误无外乎就两种哲学

  1. 得到正确的结果或触发异常,异常不就地处理则向外传播
  2. 总是能得到一个结果,于结果中获知是否有异常,如 Option<T>, Result<T, E>

其实本人更钟爱前一种方式,因为正常逻辑可以更流畅的表达,不至于被众多的 if 语句所打断; 而异常的话可以就地解决,或者延迟到某处去集中处理。Java 多是用第一种方式,所以某些框架尽量使用 Unchecked 异常,不强制插入 try/catch 块。

第二种方式,在 shell 或 C++ 很常见,比如 shell 下每调用一个命令都有返回数值, 即 $?, 0 为正常,非 0 为有错误; C++ 的 GetLastError() 也是一样的意思。

现在所学的 Rust 在处理结果和错误时,采用了第二种方式,不过使用上 Rust 的模式匹配处理起 Option<T>, Result<T, E> 倒也不难,而且 Option<T> 和 Result<T, E> 这样的返回结果还用来向上传播异常,出错时还能追踪到异常栈。 阅读全文 >>


http://www.kler.cn/a/396398.html

相关文章:

  • 《基于Oracle的SQL优化》读书笔记
  • 【全面系统性介绍】虚拟机VM中CentOS 7 安装和网络配置指南
  • C++的一些模版
  • Odoo :一款免费开源的日化行业ERP管理系统
  • Kafka-Eagle的配置——kafka可视化界面
  • PCA 原理推导
  • Qt中实现旋转动画效果
  • Electron 项目启动外部可执行文件的几种方式
  • 网络安全之WINDOWS端口及病毒编写
  • 发国外SCI/SSCI/AHCI,文章被WOS数据库漏检,应该如何催检索?附催检索(信)邮件模板!
  • CAP与BASE分布式理论
  • 利用redis的key失效监听器KeyExpirationEventMessageListener作任务定时提醒功能
  • DLMM(数字化转型成熟度模型认证)是什么?
  • 苍穹外卖学习-day11
  • 艾体宝干货丨微突发流量检测与分析:IOTA让网络监控更精准
  • 鸿蒙next版开发:ArkTS组件通用属性(文本通用)
  • 每日八股——JVM组成
  • SpringSSM整合
  • The Planets: Earth -- 练习
  • GOLANG+VUE后台管理系统
  • Linux第92步_如何编写“设备树”下的platform设备驱动
  • STM32 串口输出调试信息
  • watch监听事件未生效
  • 网络动力学
  • 飞创直线电机模组 VS 传统丝杆模组:谁是自动化传动领域的王者?
  • HarmonyOS ArkTs 解决流式传输编码问题