diff --git a/src/main/java/be/seeseepuff/webgit/controller/ErrorController.java b/src/main/java/be/seeseepuff/webgit/controller/ErrorController.java new file mode 100644 index 0000000..31013bb --- /dev/null +++ b/src/main/java/be/seeseepuff/webgit/controller/ErrorController.java @@ -0,0 +1,29 @@ +package be.seeseepuff.webgit.controller; + +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.servlet.ModelAndView; + +import java.io.PrintWriter; +import java.io.StringWriter; + +@ControllerAdvice +public class ErrorController +{ + @ExceptionHandler(Exception.class) + public ModelAndView handleException(HttpServletRequest request, Exception ex) + { + StringWriter sw = new StringWriter(); + ex.printStackTrace(new PrintWriter(sw)); + + ModelAndView mav = new ModelAndView("error"); + mav.addObject("status", HttpStatus.INTERNAL_SERVER_ERROR.value()); + mav.addObject("error", HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase()); + mav.addObject("message", ex.getMessage()); + mav.addObject("trace", sw.toString()); + mav.setStatus(HttpStatus.INTERNAL_SERVER_ERROR); + return mav; + } +} diff --git a/src/main/resources/templates/error.html b/src/main/resources/templates/error.html new file mode 100644 index 0000000..382d2fa --- /dev/null +++ b/src/main/resources/templates/error.html @@ -0,0 +1,27 @@ + + +
+| Status | +500 | +
| Error | +Internal Server Error | +
| Message | +Something went wrong | +
No stack trace available.+