SpringMVC: manejo de excepciones

Manejo de excepciones

Hay dos tipos de excepciones en el sistema: excepciones esperadas y excepciones de tiempo de ejecución: la primera captura la información de excepción al capturar excepciones, y la segunda reduce principalmente la aparición de excepciones de tiempo de ejecución al estandarizar el desarrollo y las pruebas de código. El dao, el servicio y el controlador del sistema se lanzan hacia arriba a través de la excepción Extiende, y finalmente el controlador frontal springmvc se entrega al procesador de excepciones para el manejo de excepciones, como se muestra a continuación:

springmvc proporciona un controlador de excepciones global (un sistema tiene solo un controlador de excepciones) para el manejo unificado de excepciones.

Clase de excepción personalizada

Defina clases de excepción para diferentes tipos de excepción y herede Exception.

public class CustomException extends Exception {
	
	//异常信息
	public String message;
	
	public CustomException(String message){
		super(message);
		this.message = message;
	}
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
}

Manejador de excepción global

Idea: cuando el sistema encuentra una excepción, se lanza manualmente en el programa, dao se lanza al servicio, el servicio es al controlador y el controlador se lanza al controlador de front-end, y el controlador de front-end llama al controlador de excepción global.

Ideas de manejo de manejadores de excepciones globales:

  1. Analizar el tipo de excepción
  2. Si el tipo de excepción es una excepción definida por el sistema, la información de la excepción se extrae directamente y se muestra en la página de error
  3. Si el tipo de excepción no es una excepción definida por el sistema, construya un tipo de excepción personalizado (el mensaje es "Error desconocido") 
public class CustomExceptionResolver implements HandlerExceptionResolver {
    
    @Override
	public ModelAndView resolveException(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex) {
			
		CustomException customException = null;
		
		if(ex instanceof CustomException){
			customException = (CustomException)ex;
		}else{
			customException = new CustomException("未知错误");
		}
		
		//错误信息
		String message = customException.getMessage();
		ModelAndView modelAndView = new ModelAndView();
		//将错误信息传到页面
		modelAndView.addObject("message", message);
		//指向错误页面
		modelAndView.setViewName("error");
		
		return modelAndView;
	}
}

error.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>错误提示</title>
</head>
<body>
    ${message }
</body>
</html>

Configurar el controlador de excepciones global en springmvc.xml

<bean class="cn.itcast.ssm.exception.CustomExceptionResolver "></bean>

Se debe lanzar una excepción manualmente en cualquiera de los controladores, servicios y dao.

Si la excepción se lanza manualmente en el programa, la información de excepción personalizada se muestra en la página de error. Si no se lanza manualmente, significa una excepción de tiempo de ejecución, y solo se muestra "Error desconocido" en la página de error.

Si hay excepciones relacionadas con las funciones empresariales, se recomienda lanzar excepciones en el servicio.

Se recomiendan excepciones que no estén relacionadas con las funciones empresariales en el controlador.

202 artículos originales publicados · elogiados 37 · 30,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/lovecuidong/article/details/103958372
Recomendado
Clasificación