diff --git a/srp_analysis/src/file_handler.rs b/srp_analysis/src/file_handler.rs
index cff1460c0a9aeca303227ab2cab36d6b75d2cfbe..81d6b46e8f8f38b09b285e3bf6212d227c6d8932 100644
--- a/srp_analysis/src/file_handler.rs
+++ b/srp_analysis/src/file_handler.rs
@@ -16,17 +16,20 @@ pub fn write_to_file(contents: String, file: PathBuf) -> std::io::Result<()> {
 /*
  * Load the tasks from a json file `file`.
  */
-pub fn load_tasks(file: PathBuf) -> Tasks {
+pub fn load_tasks(file: PathBuf) -> Result<Tasks, String> {
     let mut serialized = String::new();
-    read_from_file(&mut serialized, file);
-    return serde_json::from_str(&serialized).unwrap();
+    match read_from_file(&mut serialized, &file) {
+        Ok(_) => (),
+        Err(_) => return Err(format!("Error: Invalid filepath {:?}", file)),
+    };
+    return Ok(serde_json::from_str(&serialized).unwrap());
 }
 
 
 /*
  * Read string from file `file` and store it in `contents`.
  */
-pub fn read_from_file(contents: &mut String, file: PathBuf) -> std::io::Result<()> {
+pub fn read_from_file(contents: &mut String, file: &PathBuf) -> std::io::Result<()> {
     let mut file = File::open(file)?;
     file.read_to_string(contents)?;
     Ok(())
diff --git a/srp_analysis/src/main.rs b/srp_analysis/src/main.rs
index a92198d5ed5ab88c70df3186586d2d55ed5bd534..3b25fcc04a449b37564fc1bafc5df7185e525997 100644
--- a/srp_analysis/src/main.rs
+++ b/srp_analysis/src/main.rs
@@ -38,7 +38,13 @@ fn main() {
     //println!("{:?}", opt);
 
     let tasks: Tasks = match opt.in_file {
-        Some(file) => load_tasks(file),
+        Some(file) => match load_tasks(file) {
+            Ok(ts) => ts,
+            Err(err) => {
+                println!("{}", err);
+                return;
+            },
+        },
         None => create_tasks(),
     };