• 0 Posts
  • 10 Comments
Joined 3 years ago
cake
Cake day: June 13th, 2023

help-circle




  • I see you’re using strings. You can do that, but then you’ll lose control over formatting, and additional context info that might be contained in them.

    I just haven’t figured out how to jam multiple error types into one enum variant yet. There’s no reason for the consumer of the module to get more pointless variants, so I’m not really sure I want an enum of enums, but maybe I’m overthinking it. I’ll fiddle more and check out your link later today.


  • I’m playing with this pattern, but it seems like it forces you to have a variant for every upstream error. For instance, I have this DatabaseError:

    	#[derive(Clone, Debug, Error)]
    	pub enum DatabaseError {
    	    #[error("database error: {0}")]
    	    Database(String),
    	    #[error("failed to deserialize from DB: {0}")]
    	    Deserialize(String),
    	    #[error("failed to serialize input: {0}")]
    	    Serialize(String),
    	    #[error("unexpected error: {0}")]
    	    Unexpected(String),
    	}
    

    But I might have 2 or 3 error types that turn into DatabaseError::Serialize. Then I end up doing custom From impls. Then I realize serde might be Serialize or Deserialize, so I’m back where I started.

    Though I would like to have that chain of errors, but I haven’t figured out how to do the custom impl From yet (or if it ends up being useful in my case, even).

    Thanks for the ideas.





  • Rust’s explicitness and being forced to handle every case is so incredibly frustrating but also feels so right.

    Thanks for posting this. I’m still trying to figure out the best technique to error handling in my programs. I just learned about anyhow the other day and kind of starting to work that in.

    I’m so tired of having to reshape errors with match statements.

    let result = match foo(a, b) {
       Ok(r) => r,
       Err(err) => {
           return Err(MyErrorEnum::Error(err.to_string()));
       }
    };
    

    This pattern is an annoying habit I keep finding myself repeating.