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

微信网站结构企业网站制作哪家好

微信网站结构,企业网站制作哪家好,海口软件开发公司,湖北随州住房和城乡建设部网站喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 9.1.1. Rust错误处理概述 Rust拥有极高的可靠性,这也延伸到了错误处理的领域。比如说在大部分情况下,Rust会迫使你…

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(=・ω・=)

9.1.1. Rust错误处理概述

Rust拥有极高的可靠性,这也延伸到了错误处理的领域。比如说在大部分情况下,Rust会迫使你意识到可能会出现错误的地方,然后在编译阶段就确保它们获得妥善的处理。

在Rust里,错误被分为两大类:

  • 可恢复的错误:比如说文件未找到,就可以把错误信息传递给用户,并让用户再次尝试寻找这个文件。
  • 不可恢复的错误:bug的另外一种说法,比如说索引越界

其他大部分编程语言都没有刻意地区分这两种错误,它们通常通过异常这种机制来统一处理。但Rust里没有类似异常的机制。

  • 针对可恢复的错误,Rust提供了Result<T, E>这个类型(下一篇文章会讲)。
  • 针对不可恢复的错误,Rust提供了panic!这个宏,当执行这个宏时,程序会立即中止执行。

9.1.2. panic!

有时候在代码里会发生糟糕的问题,而针对这些问题开发者是束手无策的。为了应对这种情况,Rust提供了panic!这个宏。

当这个宏执行时,会发生这些动作:

  • 它会打印出错误信息
  • 然后展开(unwind)和清理调用栈(Stack)
  • 退出程序

9.1.3. 当panic!时,展开还是终止(abort)调用栈

程序在展开调用栈时工作量极大,因为Rust会沿着调用栈往回走,清理沿途遇到的每个函数中的数据。

与之相反的,Rust也提供了终止(abort)调用栈的选择。这种做法就是不进行清理,直接停止程序,但是程序所使用的内存就只有稍后交给操作系统来清理。

如果你想要二进制文件更小,就把设置从“展开”改为“终止”:在Cargo.toml中适当的profile部分设置,写下panic = 'abort'就行

以我的Cargo.toml为例:

[package]  
name = "RustStudy"  
version = "0.1.0"  
edition = "2021"  [dependencies]  
rand = "0.8.5"  [profile.release]  
panic = 'abort'

profile.realse的意思是在发布模式下运行时

9.1.4. panic!

看一个panic!宏的例子:

fn main() {  panic!("Something went wrong");  
}

非常简单的例子,panic!宏的参数就是错误信息,它会在程序停止时被打印出来。

输出:

thread 'main' panicked at src/main.rs:2:5:
Something went wrong
stack backtrace:0: rust_begin_unwindat /rustc/90b35a6239c3d8bdabc530a6a0816f7ff89a0aaf/library/std/src/panicking.rs:665:51: core::panicking::panic_fmtat /rustc/90b35a6239c3d8bdabc530a6a0816f7ff89a0aaf/library/core/src/panicking.rs:74:142: RustStudy::mainat ./src/main.rs:2:53: core::ops::function::FnOnce::call_onceat /Users/stanyin/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

在前面几篇文章中也有程序恐慌的时候,但是那时候我没有把stack backtrace粘贴进文章,因为当时还没有讲到这里。上面呈现的才是完整的恐慌信息。现在我们来解析一下:

  • 第一行告诉了程序恐慌的位置——在src目录下的main.rs里的第2行第5个字符
  • 第二行是程序制定的错误信息
  • 从第三行开始的stack backtrace指的是回溯信息。在第2这个位置就是main.rs,在回溯信息里包含了到达发生错误的地点的所有的调用函数的列表,而在它下边(也就是第3这个地方)就是调用了我们代码的代码,可能包含了Rust的核心库、标准库,抑或是第三方的库
  • 最后一行的note说可以把RUST_BACKTRACE设为full来获得所有的详细信息,具体操作就是在终端输入set RUST_BACKTRACE=full && cargo run(对于Windows,对于MacOS/Linux:export RUST_BACKTRACE=full && cargo run `)。

为了获得像刚才这样的调试信息,还有一点前提条件,就是程序不能运行在发布模式(--release)下而是调试模式(debug)。cargo buildcargo run都是默认调试模式,所以只要确保不带--release这个flag就行。

http://www.tj-hxxt.cn/news/88940.html

相关文章:

  • 邵阳哪里做网站百度指数怎么看
  • 邢台哪儿专业做网站seo排名工具给您好的建议
  • 小鱼儿网站做啥用的班级优化大师的优点
  • 做收钱的网站要什么条件网站建设平台软件
  • 网站建设与设计教程视频教程铜川网站seo
  • 十大社区团购平台排名百度上如何做优化网站
  • 邯郸网站建设的地方2345网址导航是什么浏览器
  • 拖拽做网站销售新人怎么找客户
  • 青岛知名网站建设公司网站关键词在哪里看
  • 济南做网站的价格seo云优化平台
  • dw用设计视图做网站网站关键词排名服务
  • 网站登录密码怎么取消保存上海建站seo
  • 谈谈你对网站开发的理解2023年10月疫情还会严重吗
  • 成都营销网站建设世界十大搜索引擎排名
  • 网站建设美词原创fifa最新排名出炉
  • 遂溪 网站产品营销推广方案
  • 长沙专业建网站公司搭建网站的步骤
  • 专门做游戏交易的网站有哪些台州seo优化公司
  • 网站统计帮哪个好属于b2b的网站有哪些
  • 安庆什么网站做火产品营销
  • 传媒公司网站制作做网站需要什么技术
  • 网站建设公司 长春seo页面优化技术
  • 网站推广律师关键词有哪些网络营销工具有哪些?
  • 盗版网站怎么做的百度词条官网入口
  • 国内做任务得数字货币的网站现在做百度推广有用吗
  • 订做网站策划深圳网络营销渠道
  • 制作网站的免费软件怎么提高关键词搜索排名
  • win7 iis 发布asp.net网站建网站要多少钱
  • 广州大石附近做网站的公司哪家好搜一下百度
  • vc 做网站源码近期的新闻消息