Generally, I agree the situation with errors is much better in Rust in the ways you describe. But, there are also panics which you can catch_unwind[1], set_hook[2] for, define a #[panic_handler][3] for, etc.
[1] https://doc.rust-lang.org/std/panic/fn.catch_unwind.html