Add more context in error messages

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
This commit is contained in:
Matthias Beyer 2019-05-18 00:14:34 +02:00
parent 1f97584738
commit e200e40070
3 changed files with 9 additions and 3 deletions

View file

@ -25,6 +25,7 @@ use chrono::Local;
use chrono::NaiveDate;
use failure::Error;
use failure::Fallible as Result;
use failure::ResultExt;
use failure::err_msg;
use crate::iter::HabitInstanceStoreIdIterator;
@ -257,7 +258,9 @@ impl HabitTemplate for Entry {
}
fn instance_id_for_name_and_datestr(habit_name: &String, habit_date: &String) -> Result<StoreId> {
crate::module_path::new_id(format!("instance/{}-{}", habit_name, habit_date)).map_err(Error::from)
crate::module_path::new_id(format!("instance/{}-{}", habit_name, habit_date))
.context(format_err!("Failed building ID for instance: habit name = {}, habit date = {}", habit_name, habit_date))
.map_err(Error::from)
}
pub mod builder {

View file

@ -19,6 +19,7 @@
use failure::Error;
use failure::Fallible as Result;
use failure::ResultExt;
use libimagstore::storeid::StoreIdIterator;
use libimagstore::storeid::StoreIdIteratorWithStore;
@ -33,11 +34,11 @@ impl Iterator for HabitTemplateStoreIdIterator {
fn next(&mut self) -> Option<Self::Item> {
while let Some(n) = self.0.next() {
match n {
match n.context("Error while iterating").map_err(Error::from) {
Ok(n) => if n.is_habit_template() {
return Some(Ok(n))
},
Err(e) => return Some(Err(e).map_err(Error::from)),
Err(e) => return Some(Err(e)),
}
}
None

View file

@ -21,6 +21,7 @@ use std::ops::BitXor;
use failure::Error;
use failure::Fallible as Result;
use failure::ResultExt;
use crate::habit::HabitTemplate;
use crate::instance::HabitInstance;
@ -88,6 +89,7 @@ pub fn get_string_header_from_entry(e: &Entry, path: &'static str) -> Result<Str
e.get_header()
.read_string(path)?
.ok_or_else(|| EM::EntryHeaderFieldMissing(path))
.context(format_err!("Error while reading header '{}' from '{}'", path, e.get_location()))
.map_err(Error::from)
}