5 ms·
You absolutely can catch and handle a panic in Rust [0]. Panics are just exceptions by a different name. Although, I do agree that the Rust ecosystem tries hard
by Buttons840 3y ago
You absolutely can catch and handle a panic in Rust [0]. Panics are just exceptions by a different name. Although, I do agree that the Rust ecosystem tries hard to avoid using panics, which is good.
[0] Example of catching, handling, and "swallowing" a panic in Rust (GTP4 wrote this): https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=9396dd4cd1714e11e77931faa0ed7638 https://play.rust-lang.org/?version=stable&mode=debug&editio...
- awestroke 3y agoThis is very uncommon to do and cannot be compared to exceptions
- byby 3y agoLearned something new. I feel though it's better if most programmers didn't know about this. It looks like cursed knowledge.
- dmytrish 3y agoIt's not exactly cursed knowledge, you just have to have enough judgement to understand where it's appropriate. Trying to do magic and patch something on a panic and retry is cursed indeed. If it's about cleaning up resources of a thread and logging this somewhere, then there's nothing cursed about this.
- sriram_malhar 3y agoCatching a panic is _morally_ equivalent to catching a SIGSEGV. It is not meant for normal program error conditions and expected failures (e.g. "No such file").
- riwsky 3y agoI.e. only to be used in exceptional cases.