异常
使用异常,让你的程序
(1)、写出“现代”的代码
(2)、结构更加清晰
(3)、错误更容易定位
(4)、用户体验更好
(5)、你的模块更加易用和稳定
(6)、你还需要什么呢?
详见:《使用.NET异常机制》
1、每一个系统都要精心设计自己的异常体系结构,例如下图
ELPSysException是系统异常,一般不显示给用户看,主要作用是对check异常的包装。
ELPBizException是所有业务异常的基类,出现这种异常时可以告知用户,可以扩展特定的子异常类。
2、spring mvc在controller层提供了统一的异常处理接口
public class ControllerExceptionResolver implements HandlerExceptionResolver {
}
<bean class="com.iflytek.edu.tlsys.web.util.ControllerExceptionResolver"></bean>
3、如果方法调用不经过controller,也可以使用spring的aop机制来进行异常处理
@Aspect
public class ExceptionHandleAspect{
/**
* 日志
*/
private static Logger logger = Logger.getLogger(ExceptionHandleAspect.class);
/**
* ThriftService实现中的公有方法为切入点。
*/
@Pointcut("execution(public * com.iflytek.edu.tlsys.tservice..impl.*Impl.*(..))")
public void defaultPointcut(){
}
/**
* ThriftService实现跌的方法调用出现异常。
* @param ex 异常
* @throws ThrTLSysException 系统异常
* @throws ThrTLBizException 业务异常
*/
@AfterThrowing(pointcut="defaultPointcut()",throwing="ex")
public void afterThrowing(Throwable ex) throws ThrTLSysException,ThrTLBizException{
logger.error(ex.getMessage(),ex);
if(ex instanceof ELPBizException){
throw new ThrTLBizException(ex.getMessage());
}else{
throw new ThrTLSysException(ex.getMessage());
}
}
}
<aop:aspectj-autoproxy/> <bean class="com.iflytek.edu.tlsys.tservice.ExceptionHandleAspect"/>
日志
系统出现异常时,最常用的处理方式,便是记日志。比较常用的日志工具有log4j、logback。
详见: http://www.cnblogs.com/jenry/archive/2007/04/10/706636.html
搜索关键字:log4j配置