5 ms·
Saying that Rust "has exceptions" is dishonest. What matters isn't whether they technically exist, but if and how they're used. In idiomatically written Rust y
by TwentyPosts 3y ago
Saying that Rust "has exceptions" is dishonest. What matters isn't whether they technically exist, but if and how they're used.
In idiomatically written Rust you will never obtain an exception/panic (unless there is a bug), and exceptions are not used for control flow. This is not the case in Java or C++ or many other languages.
- fweimer 3y agoI don't know. It seems fairly common to use std::panic::catch_unwind as a top-level error handler. compiler/rustc_driver_impl/src/lib.rs has this: /// The compiler currently unwinds with a special sentinel value to abort /// compilation on fatal errors. This function catches that sentinel and turns /// the panic into a `Result` instead. That's clearly using unwinding as a control flow primitive. There's another example in src/tools/rustfmt/src/lib.rs, in format_snippet, where panics apparently are just suppressed. I expect application servers for Rust to handle panics in a similar way: abort a specific request, but not terminate the whole process.