根据标题,这两者有什么区别,我什么时候应该考虑使用一个而不是另一个?
最佳答案
根据您对 panic 发生时所发生的事情的定义(在 Cargo.toml
中定义),可能会或可能不会有所不同。根据您将其设置为 unwind
还是 abort
,会发生不同的事情:
- 使用
unwind
,这将(顾名思义)展开堆栈。有了这个,特别是可以获得完整的堆栈跟踪 - 使用
abort
,你只会得到最后一个被调用者
process::exit()
,另一方面,是一个“干净”的退出——你不会得到最后一个被调用者,你会得到一个正常的进程退出状态。
因此,您最好遵守以下几点:
- 对于计划关闭,使用
exit()
。请注意,已知错误被视为计划关闭 - 对于计划外的关闭(即异常故障),请考虑
panic!()
,因为当发生这种情况时,你们双方都将从能够获得堆栈跟踪中获益,并且故障案例应该足够异常它实际上是下落不明的,并且源于计划外的情况
关于rust - panic 和 process::exit 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58362850/