spring项目中异常设计

本文介绍如何使用Spring4进行异常处理,通过定义@ControllerAdvice注解的类实现全局异常捕获。文章详细展示了三种不同类型的异常处理方法,并讨论了自定义异常的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们用到spring4 来处理异常,每当项目发生异常时,它就会调用相应的方法。

 

spring异常处理类:

 

@Controller
@ControllerAdvice
public class ControllerExceptionHandler{
	
	private static final Log LOGGER = LogFactory.getLog(ControllerExceptionHandler.class);
	
	@ExceptionHandler(Throwable.class)  
    @ResponseBody  
    public ResponseEntity<Message> handleThrowable(Throwable ex) { 
		System.out.println("#############异常111111111##############");
		LOGGER.error("", ex);
		Message message = new Message();
		return new ResponseEntity<Message>(message, null, HttpStatus.OK);
    }  
		
	
	@ExceptionHandler(IllegalArgumentException.class)  
    @ResponseBody  
    public ResponseEntity<Message> handleIllegalArgumentException(IllegalArgumentException ex) { 
		System.out.println("#############异常2222222222##############");
		LOGGER.error("", ex);
		Message message = new Message();
		return new ResponseEntity<Message>(message, null, HttpStatus.OK);
    }
	
	@ExceptionHandler(BaseLogicException.class)  
    @ResponseBody  
    public ResponseEntity<Message> handleBaseLogicException(BaseLogicException ex) { 
		System.out.println("#############异常333333333333333333333333333333##############");
		LOGGER.error("", ex);
		Message message = new Message();
		return new ResponseEntity<Message>(message, null, HttpStatus.OK);
    }
}

 

 

注意里面的注解都不能少,而且使用springmvc扫描这个类。不要再使用spring重复扫描。

 

<context:component-scan base-package="com.qing.web.controller" use-default-filters="false">
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
		<context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" />
	</context:component-scan>

 

 

其实异常处理就是这么简单,每次项目中出现异常时,就会跳到上面相应的方法中。

我们可以在上面的方法中集中处理,可以跳到某一页面。

 

我们应该注意到了第三个方法,会拦截BaseLogicException异常。 这个是我们自己定义的异常。

既然我们想自定义异常,那就要规范一点,我们是不是需要一个异常码,比如404,500. 我们是不是需要统一的异常显示信息,是不是需要考虑国际化。

那么接下来我们就看看怎么实现吧。

明天再写

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值