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