SringBoot异常处理与单元测试

SringBoot异常处理与单元测试

1、异常处理方式

1.1自定义错误页面

SpringBoot默认的处理异常的机制:一旦程序出现了异常,SpringBoot会/error的URL发送请求。在SpringBoot中提供了一个BasicExceptionController处理/error请求,会跳转到默认的异常页面。

若自定义一个错误页面。命名为error在src/main/resource/templates/error.html

只要遇到异常就会跳转到这个页面。

1.2@ExceptionHandle注解处理异常

@ExceptionHandle(value={异常类型.class})

方法返回值为ModelAndView,目的是为了封装异常信息和视图的指定

方法参数为Exception e 目的是将产生异常对象注入到方法中

1.3@ControllerAdvice+@ExceptionHandle注解处理异常

创建一个专门处理异常的Controller(全局异常类),添加@ControllerAdvice注解。在该 Controller中定义处理异常的方法。

这样也可以处理其他Controller的异常。

1.4配置SimpleMappingExceptionResolver处理异常

/**
 * 
 * @author 24957
 *
 *全局异常处理
 *
 */
@Configuration
public class Exception {

	/**
	 * 该方法返回值类型必须为SimpleMappingExceptionResolver
	 * @return
	 */
	@Bean
	public SimpleMappingExceptionResolver getResolver() {
		SimpleMappingExceptionResolver resolver = new SimpleMappingExceptionResolver();
		
		Properties properties = new Properties();
		
		/**
		 * 参数一:异常类型,全称
		 * 参数二:视图名称
		 */
		properties.put("java.lang.ArithmeticException", "error1");
		properties.put("java.lang.NullPointerException", "error2");
		/**
		 * 设置异常与视图映射信息
		 */
		resolver.setExceptionMappings(properties);
		return resolver;
	}
}

1.5自定义HandleExceptionResolver处理异常

/**
 * 通过实现HandleExceptionResolver接口处理全局异常
 * @author 24957
 *
 */
@Configuration
public class Exception2 implements HandlerExceptionResolver {

	@Override
	public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
			java.lang.Exception ex) {
		// TODO Auto-generated method stub
		ModelAndView mv = new ModelAndView();
		//判断不同异常类型
		if(ex instanceof ArithmeticException) {
			mv.setViewName("error1");
		}
		if(ex instanceof NullPointerException) {
			mv.setViewName("error2");
		}
		mv.addObject("error", ex.toString());
		
		return mv;
	}

	
	
}

2、整合Junit单元测试

/**
 * 测试类
 * 
 * @RunWith(SpringJUnit4ClassRunner.class)   启动器
 * @SpringBootTest(classes= {App.class}) 
 * 当前类为测试类,并且启动app启动类
 * 
 * @author 24957
 *
 */

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes= {App.class})
public class TestUsers {

	@Autowired
	private UsersServiceImpl userServiceImpl;
	@Test
	public void testAddUsers() {
		userServiceImpl.adduser();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值