版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务11.1异常处理学习目标
了解异常处理机制熟悉SpringMVC异常的统一处理1简单异常处理器先定一个小目标!
先定一个小目标!熟悉简单异常处理器,能够说出简单异常处理器如何使用1简单异常处理器HandlerExceptionResolver接口如果希望对SpringMVC中所有异常进行统一处理,可以使用SpringMVC提供的异常处理器HandlerExceptionResolver接口。SpringMVC内部提供了HandlerExceptionResolver的实现类SimpleMappingExceptionResolver。它实现了简单的异常处理,通过该实现类可以将不同类型的异常映射到不同的页面,当发生异常的时候,实现类根据发生的异常类型跳转到指定的页面处理异常信息。实现类也可以为所有的异常指定一个默认的异常处理页面,当应用程序抛出的异常没有对应的映射页面,则使用默认页面处理异常信息。
1简单异常处理器STEP01下面通过一个案例演示SimpleMappingExceptionResolver对异常的统一处理,案例具体实现步骤如下所示。在IDEA中创建一个名称为project11的MavenWeb项目,并在项目project11中搭建好SpringMVC运行所需的环境。1简单异常处理器STEP02创建ExceptionController类,ExceptionController类的具体代码如下所示。
@ControllerpublicclassExceptionController{//
抛出空指针异常@RequestMapping("showNullPointer")publicvoidshowNullPointer()
{ArrayList<Object>list=newArrayList<>();System.out.println(list.get(2)); }//
抛出IO异常省略,抛出算术异常省略}1简单异常处理器STEP03在SpringMVC的配置文件spring-mvc.xml中使用SimpleMappingExceptionResolver指定异常和异常处理页面的映射关系。SpringMVC配置文件的部分配置如下所示。
<!--配置静态资源的访问映射,此配置中的文件,将不被前端控制器拦截--><mvc:resourcesmapping="/js/**"location="/js/"/><!--注入SimpleMappingExceptionResolver--><beanclass="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"><!--
定义特殊处理的异常,类名或完全路径名作为key,对应的异常页面名作为值--><propertyname="exceptionMappings"><props><propkey="java.lang.NullPointerException">nullPointerExp.jsp</prop><propkey="IOException">IOExp.jsp</prop></props></property></bean>1简单异常处理器STEP04创建异常处理页面。在此不对异常处理页面做太多处理,只在页面中展示对应的异常信息。
<!--这里只展示nullPointerExp.jsp页面--><%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>空指针异常处理页面</title></head><body>空指针异常处理页面${exp}</body></html>1简单异常处理器STEP05启动project11项目,在浏览器中访问地址http://localhost:8080/project11/showNullPointer,程序将执行showNullPointer()方法。方法执行后页面显示效果如图所示。从图中所示的信息可以看出,程序在抛出异常时,会跳转到异常类型对应的异常处理页面中。如果抛出的异常没有在SpringMVC的配置文件中指定对应的异常处理页面,那么程序会跳转到指定的默认异常处理页面。
2自定义异常处理器先定一个小目标!
先定一个小目标!熟悉自定义异常处理器,能够说出自定义异常处理器如何使用,并能够编写自定义异常类2自定义异常处理器resolveException()方法
除了使用SimpleMappingExceptionResolver进行异常处理,还可以自定义异常处理器统一处理异常。通过实现HandlerExceptionResolver接口,重写异常处理方法resolveException()来定义自定义异常处理器。当Handler执行并且抛出异常时,自定义异常处理器会拦截异常并执行重写的resolveException()方法,该方法返回值是ModelAndView类型的对象,可以在ModelAndView对象中存储异常信息,并跳转到异常处理页面。2自定义异常处理器STEP01创建自定义异常类MyException。
publicclassMyExceptionextendsException
{privateStringmessage;//
异常信息publicMyException(Stringmessage){super(message);this.message=message; }@OverridepublicStringgetMessage(){returnmessage;}publicvoidsetMessage(Stringmessage){this.message=message;}}接下来通过一个案例演示自定义异常处理器分类别处理自定义异常和系统自带的异常,具体实现步骤如下所示。2自定义异常处理器STEP02修改文件ExceptionController.java,在ExceptionController类中,新增方法addData()用于抛出自定义异常,addData()方法的具体代码如下所示。
@RequestMapping("addData")publicvoidaddData()throwsMyException{thrownewMyException("新增数据异常!");}2自定义异常处理器STEP03创建名称为MyExceptionHandler的自定义异常处理器,方法中重写resolveException()方法。MyExceptionHandler类的部分代码如下所示。//只列举了if...else的内容if(exinstanceofMyException){//自定义异常,将异常信息直接返回msg=ex.getMessage();}
else{//如果是系统的异常,从堆栈中获取异常信息Writerout=newStringWriter();
PrintWriters=newPrintWriter(out);ex.printStackTrace(s);StringsysMsg=out.toString();//系统真实异常信息msg="网络异常!";//向客户隐藏真实的异常信息,仅发送提示信息}2自定义异常处理器STEP04创建一个名称为error.jsp的文件,用作异常处理页面。本案例不对异常处理页面进行过多处理,只将异常信息打印在页面上。
<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>异常处理页面</title></head><body>${msg}</body></html>2自定义异常处理器STEP05启动project11项目,在浏览器中访问地址http://localhost:8080/project11/showNullPointer,程序将执行showNullPointer()方法,方法执行后页面显示效果如图所示。2自定义异常处理器STEP06在浏览器中访问地址http://localhost:8080/project11/addData,程序将执行addData()方法,方法执行后页面显示效果如图所示。从图中所示的页面显示效果可以得出,如果Handler执行时抛出的是自定义异常,异常处理页面打印自定义异常的异常信息;如果Handler执行时抛出的是系统自带的异常,异常处理页面统一打印“网络异常”。异常处理器对不同类型的异常进行区别处理。3异常处理注解先定一个小目标!
先定一个小目标!掌握异常处理注解,能够在程序中使用异常处理注解处理异常3异常处理注解@ControllerAdvice注解的作用
从Spring3.2开始,Spring提供了一个新注解@ControllerAdvice,
@ControllerAdvice有以下两个作用。
注解作用在类上时可以增强Controller,对Controller中被@RequestMapping注解标注的方法加一些逻辑处理。
@ControllerAdvice注解结合方法型注解@ExceptionHandler,可以捕获Controller中抛出的指定类型的异常,从而实现不同类型的异常统一处理。
3异常处理注解STEP01创建名称为ExceptionAdvice的异常处理器。ExceptionAdvice类中定义2个处理不同异常的方法,其中doMyException()方法用来处理Handler执行时抛出的自定义异常,
doOtherException()方法用来处理Handler执行时抛出的系统异常。@ControllerAdvicepublicclassExceptionAdvice{
//
处理MyException类型的异常@ExceptionHandler(MyException.class)publicModelAndViewdoMyException(MyExceptionex)throwsIOException{ModelAndViewmodelAndView=newModelAndView();modelAndView.addObject("msg",ex.getMessage());modelAndView.setViewName("error.jsp");returnmodelAndView;}
//
处理Exception类型的异常doOtherException()省略}接下来通过一个案例演示使用注解实现异常的分类处理,具体实现步骤如下所示。2.自定义异常处理器STEP02启动project11项目,在浏览器中访问地址http://localhost:8080/project11/showN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JQ-1-carboxylic-acid-NH-C8-COOH-生命科学试剂-MCE
- 2026年太原小升初测试题及答案
- 2026年防持球突破测试题及答案
- 2026年仪器培训测试题及答案
- 2026年奥迪销售总监测试题及答案
- 2026年人事专员性格测试题及答案
- 2026年奔驰产品知识测试题及答案
- 2026年测试爱不爱你测试题及答案
- 2026年epg16pf测试题及答案
- 2026年最火的心里测试题及答案
- 2026年二级注册计量师(计量法律法规及综合知识)考试试题及答案
- 2026年互联网新闻信息服务许可与从业人员教育培训管理试题
- 保险公司业务制度
- 2026春道德与法治三年级下册教学计划及进度表
- 6月9日档案宣传日课件
- (更新)高龄颈椎病患者加速康复外科与延续护理共识解读课件
- T-CCEMA 0006-2024煤矸石基人造土壤基质
- 新交际英语(2024)一年级上册Unit 5 School things 核心素养教案
- 2025小型化城市综合管廊技术规程
- 学习道法课件的方法
- 贝朗crrt使用及维护课件
评论
0/150
提交评论