diff --git a/erpnext/education/utils.py b/erpnext/education/utils.py
index 641664c..5aaaa2f 100644
--- a/erpnext/education/utils.py
+++ b/erpnext/education/utils.py
@@ -66,9 +66,9 @@
 		return None
 	try:
 		student_id = frappe.get_all("Student", {"student_email_id": email}, ["name"])[0].name
-		return student_id
-	except IndexError:
-		return None
+		return frappe.get_doc("Student", student_id)
+	except (IndexError, frappe.DoesNotExistError):
+		frappe.throw(_("Student with email {0} does not exist.".format(email)))
 
 def check_super_access():
 	current_user = frappe.get_doc('User', frappe.session.user)
diff --git a/erpnext/www/lms.py b/erpnext/www/lms.py
index 9ccafa9..f71fc59 100644
--- a/erpnext/www/lms.py
+++ b/erpnext/www/lms.py
@@ -8,22 +8,14 @@
 	student = utils.get_current_student()
 	if student == None:
 		return None
-	try:
-		student = frappe.get_doc("Student", student)
-		return student.get_program_enrollments()
-	except:
-		return None
+	return student.get_program_enrollments()
 
 @frappe.whitelist()
 def get_all_course_enrollments():
 	student = utils.get_current_student()
 	if student == None:
 		return None
-	try:
-		student = frappe.get_doc("Student", student)
-		return student.get_all_course_enrollments()
-	except:
-		return None
+	return student.get_all_course_enrollments()
 
 # Vue Client Functions
 @frappe.whitelist(allow_guest=True)
@@ -151,9 +143,9 @@
 
 @frappe.whitelist()
 def enroll_in_program(program_name):
-	if(not utils.get_current_student()):
+	student = utils.get_current_student()
+	if not student:
 		utils.create_student_from_current_user()
-	student = frappe.get_doc("Student", utils.get_current_student())
 	program_enrollment = student.enroll_in_program(program_name)
 	return program_name
 
@@ -183,11 +175,11 @@
 		:param course_name:
 		:param program_name:
 	"""
-	if not utils.get_current_student():
+	student = utils.get_current_student()
+	if not student:
 		return {'flag':'Start Course' }
 	course_enrollment = utils.get_course_enrollment(course_name)
 	program_enrollment = utils.get_program_enrollment(program_name)
-	student = frappe.get_doc("Student", utils.get_current_student())
 	if not program_enrollment:
 		return None
 	if not course_enrollment:
@@ -210,14 +202,14 @@
 		:param course_name:
 	"""
 	topic = frappe.get_doc("Topic", topic_name)
-	if not utils.get_current_student():
+	student = utils.get_current_student()
+	if not student:
 		topic_content = topic.get_all_children()
 		if topic_content:
 			return {'flag':'Start Course', 'content_type': topic_content[0].content_type, 'content': topic_content[0].content}
 		else:
 			return None
 	course_enrollment = utils.get_course_enrollment(course_name)
-	student = frappe.get_doc("Student", utils.get_current_student())
 	progress = student.get_topic_progress(course_enrollment.name, topic)
 	if not progress:
 		return { 'flag':'Start Topic', 'content_type': None, 'content': None }
@@ -261,8 +253,7 @@
 @frappe.whitelist()
 def get_joining_date():
 	current_student = utils.get_current_student()
-	if(current_student):
-		student = frappe.get_doc("Student", current_student)
+	if current_student:
 		return student.joining_date
 	else:
 		return None
@@ -272,7 +263,7 @@
 	program = frappe.get_doc("Program", program_name)
 	program_enrollment = utils.get_program_enrollment(program_name)
 	quiz_meta = frappe._dict()
-	student = frappe.get_doc("Student", utils.get_current_student())
+	student = utils.get_current_student()
 	if not program_enrollment:
 		return None
 	else:
@@ -281,7 +272,6 @@
 			course_enrollment = utils.get_course_enrollment(course.course)
 			meta = course_enrollment.get_progress(student)
 			for progress_item in meta:
-				# if progress_item['content_type'] == "Quiz" and progress_item['is_complete'] == True:
 				if progress_item['content_type'] == "Quiz":
 					progress_item['course'] = course.course_name
 					progress_list.append(progress_item)
