SpringMVC系列之(十一)异常处理
异常处理
1. 未进行异常处理的异常传递流程
2. SpringMVC异常处理流程
3. SpringMVC异常处理开发步骤
- 编写自定义异常类(做提示信息的)
- 编写异常处理器
- 配置异常处理器(跳转到错误提示页面)
4. 实现
Controller中的方法
package cn.itcast.controller;
import cn.itcast.domain.User;
import cn.itcast.exception.TestException;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.List;
import java.util.UUID;
/**
* @author 商务小本本
*/
@Controller
@RequestMapping("/test")
public class HelloController {
@RequestMapping("/testException")
public String testException() throws TestException {
try {
int a = 10/0;
} catch (Exception e) {
e.printStackTrace();
throw new TestException("Controller报错!!!");
}
return "success";
}
}
- 编写自定义异常类(做提示信息的)
package cn.itcast.exception;
public class TestException extends Exception{
private String message;
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public TestException(String message) {
this.message = message;
}
}
- 编写异常处理器(跳转到错误提示页面)
package cn.itcast.exception;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ExceptionResolver implements HandlerExceptionResolver {
/**
* 需要实现HandlerExceptionResolver这个接口
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @param e 此处的e就是Controller中testException方法抛出的异常,此处就是TestException的实例
* @return
*/
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
ModelAndView mv = new ModelAndView();
String message = e.getMessage();
mv.addObject("msg", message);
mv.setViewName("error");
return mv;
}
}
- 配置异常处理器
<bean class="cn.itcast.exception.ExceptionResolver" id="exceptionResolver"></bean>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术