Panic!
似乎是在开发模式下停止程序的正确方法。但是,出于例外错误,不应该发布显示此类消息的程序:
thread '<main>' panicked at 'error message: ()', x.rs:785
有没有办法尽早退出程序并显示错误代码,而不显示面向开发人员的文本?我可以使用process::exit
,但我读过它没有执行清理,那么我们应该使用什么?
答案 0 :(得分:7)
panic!
不是停止计划的正确方法。
它的唯一目的是在一切即将南下并且你无法恢复时中止。如果您希望在任何地方出现一些错误行为,请使用Result
并通过打印一条好消息并干净地退出来从该行为中恢复。
如果您的代码中有panic!
或assert!
个离子,并且它们会触发,那么您显示的消息是应该显示的唯一正确的内容,因为它是代码中的错误并且没有干净的方法可以从错误中恢复。
请注意,panic!
不一定执行清理。如果你恐慌,并且在Drop
impl中发生了另一次恐慌,程序就会中止。还有一个针对rustc的设置,可以关闭恐慌时的清理工作,并简单地在panic!
上中止。