diff --git a/javax-servlets/src/main/java/com/baeldung/servlets/ErrorHandlerServlet.java b/javax-servlets/src/main/java/com/baeldung/servlets/ErrorHandlerServlet.java
new file mode 100644
index 0000000000..0008e837c0
--- /dev/null
+++ b/javax-servlets/src/main/java/com/baeldung/servlets/ErrorHandlerServlet.java
@@ -0,0 +1,34 @@
+package com.baeldung.servlets;
+
+import javax.servlet.annotation.*;
+import javax.servlet.http.*;
+import java.io.*;
+import java.util.*;
+
+import static javax.servlet.RequestDispatcher.*;
+
+@WebServlet(urlPatterns = "/errorHandler")
+public class ErrorHandlerServlet extends HttpServlet {
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+ throws IOException {
+ resp.setContentType("text/html; charset=utf-8");
+ try (PrintWriter writer = resp.getWriter()) {
+ writer.write("
Error description");
+ writer.write("Error description
");
+ writer.write("");
+ Arrays.asList(ERROR_STATUS_CODE, ERROR_EXCEPTION_TYPE, ERROR_MESSAGE)
+ .forEach(e ->
+ writer.write("- " + e + ":" + req.getAttribute(e) + "
")
+ );
+ writer.write("
");
+ writer.write("");
+ }
+
+ Exception exception = (Exception) req.getAttribute(ERROR_EXCEPTION);
+ if (IllegalArgumentException.class.isInstance(exception)) {
+ getServletContext().log("Error on an application argument", exception);
+ }
+ }
+}
\ No newline at end of file
diff --git a/javax-servlets/src/main/java/com/baeldung/servlets/RandomErrorServlet.java b/javax-servlets/src/main/java/com/baeldung/servlets/RandomErrorServlet.java
new file mode 100644
index 0000000000..c95bd2cec0
--- /dev/null
+++ b/javax-servlets/src/main/java/com/baeldung/servlets/RandomErrorServlet.java
@@ -0,0 +1,13 @@
+package com.baeldung.servlets;
+
+import javax.servlet.annotation.*;
+import javax.servlet.http.*;
+
+@WebServlet(urlPatterns = "/randomError")
+public class RandomErrorServlet extends HttpServlet {
+
+ @Override
+ protected void doGet(HttpServletRequest req, final HttpServletResponse resp) {
+ throw new IllegalStateException("Random error");
+ }
+}
\ No newline at end of file
diff --git a/javax-servlets/src/main/webapp/WEB-INF/web.xml b/javax-servlets/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..c9a06ac52d
--- /dev/null
+++ b/javax-servlets/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,16 @@
+
+
+
+ 404
+ /error-404.html
+
+
+
+ java.lang.Exception
+ /errorHandler
+
+
\ No newline at end of file
diff --git a/javax-servlets/src/main/webapp/error-404.html b/javax-servlets/src/main/webapp/error-404.html
new file mode 100644
index 0000000000..b36fc44160
--- /dev/null
+++ b/javax-servlets/src/main/webapp/error-404.html
@@ -0,0 +1,14 @@
+
+
+
+
+ Error page
+
+
+
+Error: Page not found
+
+Go back home
+
+
+
\ No newline at end of file