Error handling in Rust

(felix-knorr.net)

111 points | by emschwartz 8 hours ago ago

2 comments

  • slau 8 hours ago

    I disagree that the status quo is “one error per module or per library”. I create one error type per function/action. I discovered this here on HN after an article I cannot find right now was posted.

    This means that each function only cares about its own error, and how to generate it. And doesn’t require macros. Just thiserror.

  • Animats 8 hours ago

    It's hard. Python 2.x had a good error exception hierarchy, which made it possible to sort out transient errors (network, remote HTTP, etc.) errors from errors not worth retrying. Python 3 refactored the error hierarchy, and it got worse from the recovery perspective, but better from a taxonomy perspective.

    Rust probably should have had a set of standard error traits one could specialize, but Rust is not a good language for what's really an object hierarchy.

    Error handling came late to Rust. It was years before "?" and "anyhow". "Result" was a really good idea, but "Error" doesn't do enough.