【发布时间】:2017-07-05 16:07:51
【问题描述】:
在编写使用Result 类型的代码时,您可能希望用户和开发人员有不同的行为。
- 在编写优雅处理错误的应用程序时,最好使用
Result。 - 在开发过程中,您可能希望“捕获”错误以查看是哪一行代码创建了错误,或者在创建
Err值时获取堆栈跟踪。
如果你犯了一个独特的错误,搜索它并不难,但如果错误来自标准库,则错误可能非常普遍。
例如,如果不手动将每个file.read()? 更改为file.read().unwrap(),就不可能知道哪个read 命令导致了意外的文件结束。
有没有一种方便的方法可以从 Result 获取堆栈跟踪?
一个弱但可行的解决方案可能是制作一个用于阅读的宏,read_in_release_unwrap_in_debug!(file, data)...但这感觉很尴尬。
我有一个文件阅读器,有很多 read 调用,但一个失败。我不确定是哪个。在运行时,我想将结果推送回调用者。为了调试,我希望停止失败的读取调用或以某种方式让我知道它的行号。
【问题讨论】:
标签: error-handling rust