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

【05】RUST错误处理

文章目录

  • 错误处理
  • panic
    • 代码
    • 运行
  • Resut
    • Result中的一些方法介绍
    • 传播错误
      • `?`运算符

错误处理

建议是尽量用Result由调用者自行决定是否恢复,不恢复也可直接在Err中调用panic。代码分支不可能走的分支可panic。

需要panic的情况:

  1. 有害状态:当一些假设、保证、协议或不可变性被打破的状态,例如无效的值、自相矛盾的值或者被传递了不存在
    的值
  2. 非预期行为,比如:不应该走的分支,不遵循契约(contracts)的函数输入
  3. 后续可能每一步都需要判断错误
  4. 没办法处理错误的,比如:调用外部库出现的无法规避的panic
  5. 实例、代码原型、测试

panic

内存越界问题,运行到此处程序会退出。

  • 展开退出(默认)
    • 回溯栈并清理函数数据
  • 直接终止,需要在Cargo.toml文件中[profile.release]配置panic = 'abort'
    • 不清理直接退出

代码

panic!("错误提示信息"); //运行到此处,会提示错误行,打印错误提示信息

运行

可以通过设置环境变量RUST_BACKTRACE为非0值,调用生成的backtrace,让panic打印调用堆栈信息

RUST_BACKTRACE=1 cargo run

Resut

官方的文档是先介绍的Result,但是个人觉得这个放在泛型后才ok。而且其本质就是一个泛型,封装了各种方法来处理Ok与Err的不同分支。貌似没必要单独拉出来。

处理可恢复错误,程序可以继续运行。成功时候返回Ok实例,失败时返回包含错误信息的Err实例。

enum Result<T,E>{
   
	Ok(T),</

文章转载自:

http://uWXD6Zbf.nLygm.cn
http://BLNOAQUc.nLygm.cn
http://ynve5yhT.nLygm.cn
http://APioYFRe.nLygm.cn
http://HVqJfjeN.nLygm.cn
http://fd5Hihmt.nLygm.cn
http://D9PbVYJb.nLygm.cn
http://QCWxkA8k.nLygm.cn
http://1svvqMIH.nLygm.cn
http://gWtOTPaC.nLygm.cn
http://XBmoq9ZD.nLygm.cn
http://l5svuspm.nLygm.cn
http://KHzfesLh.nLygm.cn
http://kFwpMiep.nLygm.cn
http://sC5f4jH2.nLygm.cn
http://TdaY81Nl.nLygm.cn
http://GLVuY3VB.nLygm.cn
http://KXnu7KL1.nLygm.cn
http://2P9MQFja.nLygm.cn
http://2aU8khl5.nLygm.cn
http://XaJeaFcF.nLygm.cn
http://bp29Th5U.nLygm.cn
http://wGqfCWxw.nLygm.cn
http://iTnUsmB0.nLygm.cn
http://xGvmaZjF.nLygm.cn
http://1SOyzEyK.nLygm.cn
http://SyjyQjcI.nLygm.cn
http://YPekaHgt.nLygm.cn
http://Ntvj8lUS.nLygm.cn
http://XDzQ5S1L.nLygm.cn
http://www.dtcms.com/a/14596.html

相关文章:

  • ASP.NET Core SignalR案例:导入英汉词典
  • 开发中用到的设计模式
  • 前端面试题目---页面抖动的原因、如何避免、如何解决
  • Spring Boot过滤器链:从入门到精通
  • 最新版Edge浏览器集成ActiveX控件之金山WpsDocFrame控件
  • redis之数据库
  • redis 缓存击穿问题与解决方案
  • Fabric.js、leaferjs、pixi.js 库的对比分析
  • 清华大学《DeepSeek:从入门到精通》
  • 零基础入门机器学习 -- 第四章分类问题与逻辑回归
  • 自动化测试 - 黑马头条测试项目笔记
  • IPoIB模块初始化过程详解
  • 企业使用统一终端管理(UEM)工具提高端点安全性
  • Django项目中创建app并快速上手(pycharm Windows)
  • 【论文笔记】ZeroGS:扩展Spann3R+GS+pose估计
  • Ubuntu 22.04 LTS 安装MinerU
  • window 安装GitLab服务器笔记
  • Python 数据结构速成教程
  • 数据结构:图论入门
  • 深入理解 C# 顶级语句:告别 Main 方法
  • Java Swing-5.jar 使用 jpackage 打包成 windows 可安装应用(exe,msi,免安装版exe)
  • 51单片机介绍
  • c#展示网页并获取网页上触发按钮的值进行系统业务逻辑处理
  • 详解电子邮箱工作原理|SMTP、POP3、IMAP、SPF、MIME
  • 【个人开发】cuda12.6安装vllm安装实践【内含踩坑经验】
  • 机器学习-1:线性回归
  • WPF基础 | 初探 WPF:理解其核心架构与开发环境搭建
  • 计算机毕业设计——Springboot的旅游管理
  • Flask Web开发的重要概念和示例
  • Node.js中Express框架使用指南:从入门到企业级实践