怎么恐慌!在生产中

时间:2016-06-30 07:24:30

标签: error-handling rust

Panic!似乎是在开发模式下停止程序的正确方法。但是,出于例外错误,不应该发布显示此类消息的程序:

thread '<main>' panicked at 'error message: ()', x.rs:785

有没有办法尽早退出程序并显示错误代码,而不显示面向开发人员的文本?我可以使用process::exit,但我读过它没有执行清理,那么我们应该使用什么?

1 个答案:

答案 0 :(得分:7)

panic!不是停止计划的正确方法。

它的唯一目的是在一切即将南下并且你无法恢复时中止。如果您希望在任何地方出现一些错误行为,请使用Result并通过打印一条好消息并干净地退出来从该行为中恢复。

如果您的代码中有panic!assert!个离子,并且它们会触发,那么您显示的消息是应该显示的唯一正确的内容,因为它是代码中的错误并且没有干净的方法可以从错误中恢复。

请注意,panic!不一定执行清理。如果你恐慌,并且在Drop impl中发生了另一次恐慌,程序就会中止。还有一个针对rustc的设置,可以关闭恐慌时的清理工作,并简单地在panic!上中止。