For me, coming from C, Rust exception handling feels very natural and obvious. Error handling in C usually involves returning either an error code, or having a sentinel value in the return type. Rust's Option type is an obvious extension, and ends up being more compact than C error handling code.