SSM之SpringMVC异常处理/在IDEA中如何配置SpringMVC的异常处理

37 篇文章 0 订阅
32 篇文章 0 订阅

写在前面
记录自己的SpringMVC学习之旅,若看不懂则建议先看前几篇博客,详细代码可在我的Gitee仓库ssm-learning克隆下载学习使用!

2.6 异常处理

2.6.1 异常处理思路

系统中异常包括两类:

  • 预期异常。通过捕获异常从而获得异常信息
  • 运行时异常RunTimeException。通过规范代码开发、测试等手段减少运行时异常的发生!

系统的Dao、Service、Controller出现都通过throws Exception向上抛出,最后由SpringMVC前端控制器交由异常处理器进行异常处理,如图:
![[Pasted image 20211205203853.png]]

2.6.2 异常处理两种方式

  • 使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver
  • 实现Spring的异常处理接口HandlerExceptionResolver自定义自己的异常处理器

2.6.3 代码操作

2.6.3.1 项目准备

新建SpringMVCweb项目,补全目录并导入spring-webmvc的资源依赖后新建接口类,并实现接口类中的方法,人工制造BUG,如下:

@Service("demoService")
public class DemoServiceImpl implements DemoService {  
    public void show1() {  
        System.out.println("抛出类型转换异常.....");  
	 	Object str = "张三";  
	 	Integer integer = (Integer) str;  
	 }  

		public void show2() {  
			System.out.println("抛出除0异常!");  
	 	int i = 1 / 0;  
	 }  

		public void show3() throws FileNotFoundException {  
			System.out.println("文件找不到异常!");  
			InputStream inputStream = new FileInputStream("C:xxx.txt");  
	 }  

		public void show4() {  
			 System.out.println("空指针异常!");  
			 String str = null;  
			 str.length();  
	 }  
}

在Controller业务方法中进行注入Service对象,如下:

@Controller  
public class UserController {  
    @Autowired  
 private DemoService demoService;  
  
 @RequestMapping(value = "/show1")  
    public String show()  
    {  
         System.out.println("show method is running!");  
		 demoService.show1();  
		 return "index";  
 }

在webapp目录下新建错误提示页面error.jsp,如图![[Pasted image 20211205205935.png]]
在web.xml中加入默认配置,如图![[Pasted image 20211205210552.png]]
SpringMVC.xml文件中配置如图![[Pasted image 20211205212634.png]]

2.6.3.2 简单异常处理器

SpringMVC已经定义好了该类型转换器,在使用时可根据项目情况进行相应异常与视图的隐射配置,
如下:

<!-- 配置异常处理器-->  
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">  
<!-- 配置默认视图页面-->  
 	<property name="defaultErrorView" value="error"/>  
</bean>

运行结果如图![[Pasted image 20211205212700.png]]
成功跳转到错误页面,并在控制台有如图输出![[Pasted image 20211205212727.png]]
再新建错误界面error1.jsp,如图![[Pasted image 20211205215238.png]]
在SpringMVC.xml中配置系统自带类型转换异常,如图![[Pasted image 20211205215352.png]]
运行即可,如图![[Pasted image 20211205215443.png]]
再新建错误界面error2.jsp,如图![[Pasted image 20211205221107.png]]
在SpringMVC.xml中配置,如图![[Pasted image 20211205221147.png]]
在Controller业务方法中更改方法,如图![[Pasted image 20211205221244.png]]
运行即可,如图![[Pasted image 20211205221340.png]]

2.6.3.3 自定义异常处理器

2.6.3.3.1 创建异常处理器类实现HandlerExceptionResolver

新建名为MyExceptionResolver的类,并实现接口HandlerExceptionResolver,如图![[Pasted image 20211205230804.png]]
新建自定义异常类,如图![[Pasted image 20211205230834.png]]

2.6.3.3.2 配置异常处理器

在SpringMVC.xml中如图配置![[Pasted image 20211205230849.png]]

2.6.3.3.3 编写异常页面

在error.jsp页面中进行取值操作,如图![[Pasted image 20211205230958.png]]

2.6.3.3.4测试异常跳转

运行后出现如图即可成功![[Pasted image 20211205231045.png]]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:博客之星2021 设计师:Hiro_C 返回首页
评论

打赏作者

花花的小脑瓜

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值