请教各位在一个多层的JAVA企业应用中,统一的异常处理要考虑哪些方面?诸如如何设计自定义异常、如何捕获、是否需要定义错误码、哪些做成checked Exception,哪些做成unchecked Exception等等? 希望有高手不吝赐教:)
高洛峰2017-04-10 17:29:43
我现在暂时是这样处理的,很基础,自己回答下自己的问题算是抛砖引玉吧:
1、继承RuntimeException的BusinessException,统一作为抛出的异常;
2、定义ErrCode的枚举,定义BusinessException抛出的异常类型;
3、各层抛出的异常,除记录日志等处理外,业务层由Action层(即后台的最上层)统一catch并处理;(包括返回统一的出错页面)
4、普通方法返回的业务异常(程序是正常,但业务分支是错误的),通过返回值中的错误码返回;
5、对上述返回值定义一个CommonResult,包含错误码和回参的HashMap;
PHP中文网2017-04-10 17:29:43
如果是spring,有ExceptionHandler,定义一个继承RuntimeException的APIException,里面包含不定变量status(HttpStatus),然后抛出的时候throw new APIException(“error_message”,HttpStatus.XXX)
然后在全局的ExceptionHandler里面捕捉APIException,handler里面做两样东西,1是对error_message的格式化,例如要求json,封装成json,然后带着传过来的Status做Response,如果是返回页面,Spring配置视图解析,然后返回字符串即可