diff --git a/src-tauri/src/utils/config.rs b/src-tauri/src/utils/config.rs
index 7b7a357855c1e95856c71ec496ddcda79e60eff8..38c03e073bf5712fe4f2fc93e0c4bb4264a8cd8e 100644
--- a/src-tauri/src/utils/config.rs
+++ b/src-tauri/src/utils/config.rs
@@ -4,8 +4,20 @@ use std::{fs, path::PathBuf};
 
 /// read data from yaml as struct T
 pub fn read_yaml<T: DeserializeOwned + Default>(path: PathBuf) -> T {
-  let yaml_str = fs::read_to_string(path).unwrap_or("".into());
-  serde_yaml::from_str::<T>(&yaml_str).unwrap_or(T::default())
+  if !path.exists() {
+    log::error!("file not found \"{}\"", path.display());
+    return T::default();
+  }
+
+  let yaml_str = fs::read_to_string(&path).unwrap_or("".into());
+
+  match serde_yaml::from_str::<T>(&yaml_str) {
+    Ok(val) => val,
+    Err(_) => {
+      log::error!("failed to read yaml file \"{}\"", path.display());
+      T::default()
+    }
+  }
 }
 
 /// save the data to the file