84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
请教各位在一个多层的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配置视图解析,然后返回字符串即可