After adding some lines today to log some information I had missed that was vital for debugging I was wondering if there were any automated tools like linters or similar static analysis tools that help you identity the information to log and or return in error cases.

I am specifically talking about the information that should be identifiable automatically because it contributes to the control flow arriving in the current scope such as values of variables in the condition for the scope or parameters of functions that calculate those values (e.g. the file name in a permission error, the value of a variable that failed an if let or let else pattern match,…

  • BB_C@programming.dev
    link
    fedilink
    arrow-up
    1
    ·
    10 months ago

    If you’re not familiar with the tracing crate, give the instrument page a read. You may find the #[instrument(err)] part particularly useful.

    As for the errors themselves, if you’re using thiserror (you should be), then the variants in your error enum would/should contain the relevant context data. And the chain of errors would be tracked via source/#[source] fields, as explained in the crate docs. You can see such chains if you use anyhow in your application code.