diff --git a/public/css/styles.css b/public/css/styles.css
index b8ff9362c3dac1dd28adf9476a49140fd562fcdc..37e18c9c8f7827d020a6ef42e7497e68113a700d 100644
--- a/public/css/styles.css
+++ b/public/css/styles.css
@@ -124,3 +124,8 @@ table {
   background-color: #2b5c02;
   transform: translateY(4px);
 }
+
+.error-msg {
+  color: red;
+  font-size: small;
+}
\ No newline at end of file
diff --git a/src/controllers/LoginController.php b/src/controllers/LoginController.php
index 7ca40f431f4b0fd314bf28b6978fda4127ff7e43..0f955b8f06f2de2d91dfc7d5e6178dc2a79672d2 100644
--- a/src/controllers/LoginController.php
+++ b/src/controllers/LoginController.php
@@ -34,7 +34,12 @@ class LoginController extends BaseController
   {
     $username_email = $_POST['username-email'];
     $password = $_POST['password'];
-    $this->service->login($username_email, $password);
+    try {
+      $this->service->login($username_email, $password);
+    } catch (Exception $e) {
+      $msg = $e->getMessage();
+      parent::render(["errorMsg" => $msg], "login", "layouts/base");
+    }
     if (isset($_SESSION['user_id'])) {
       // redirect
       parent::redirect("/");
diff --git a/src/controllers/RegisterController.php b/src/controllers/RegisterController.php
index 57ee1f8680506f52561a1d11d42704ed6d34f708..47e6b5a3ac04acc5be0803b95e6e58beeb96cb28 100644
--- a/src/controllers/RegisterController.php
+++ b/src/controllers/RegisterController.php
@@ -28,7 +28,12 @@ class RegisterController extends BaseController
     $email = $_POST['email'];
     $password = $_POST['password'];
     $confirm_password = $_POST['confirm-password'];
-    $response = $this->service->register($username, $email, $password, $confirm_password);
+    try {
+      $response = $this->service->register($username, $email, $password, $confirm_password);
+    } catch (Exception $e) {
+      $msg = $e->getMessage();
+      parent::render(["errorMsg" => $msg], "register", "layouts/base");
+    }
     parent::redirect("/login");
   }
 }
diff --git a/views/login.php b/views/login.php
index 04bf1f404329986fc3fbc8cee594255ef8f8dab5..f8d287044bc790f1977123d4d9cad58d7ae36cda 100644
--- a/views/login.php
+++ b/views/login.php
@@ -1,5 +1,8 @@
 <div class="form-container">
   <h2 class="header-title">Login</h2>
+  <p class="error-msg"><?php if (isset($errorMsg)) {
+                          echo "$errorMsg";
+                        } ?></p>
   <form class="form" method="post">
     <div class="form-group">
       <label for="username-email">Username or Email</label>
diff --git a/views/register.php b/views/register.php
index 083290218487db6905b03c0d496b293ebc8d4395..8adc0936754fce1968d63c3774eda09adeafa6b3 100644
--- a/views/register.php
+++ b/views/register.php
@@ -1,5 +1,8 @@
 <div class="form-container">
   <h2 class="header-title">Register</h2>
+  <p class="error-msg"><?php if (isset($errorMsg)) {
+                          echo "$errorMsg";
+                        } ?></p>
   <form class="form" method="post">
     <div class="form-group">
       <label for="username">Username</label>