top | item 41899550

(no title)

soulbadguy | 1 year ago

> except that you're forced to acknowledge when a function call is capable of producing an error

Acknowledging the error is handling the error even if partially. The point of exceptions is to only acknowledge error that one can/knows how to properly handle

discuss

order

kibwen|1 year ago

> The point of exceptions is to only acknowledge error that one can/knows how to properly handle

In Rust this takes a single character. There's effectively no cost to having the programmer acknowledge the error, and there's a large benefit in that you now know that there's no such thing as an error that the programmer ought to have handled but was simply unaware of. That's a huge benefit for writing resilient software.

elcritch|1 year ago

It's one character in the best case. In the worse case you need to convert the error types to your error type which just re-wraps or replicates the upstream error type. Then repeat this for every library type you use. Zigs error design seems saner in this aspect at least. Rust, IMHO, just makes errors require lots of unnecessary manual labor instead of being smart about it.

Alternatively everything just gets put into a `dyn trait` and you're effectively just bubbling up errors just like with exceptions, but with way more programmer overhead. The performance overhead of constantly doing if/else branches for errors adds up as well in some situations.

Of course a fair bit of Rust code just uses `unwrap` to deal with inconvenient errors.