异常处理

半城伤御伤魂 提交于 2019-12-14 11:26:48

异常抽象:有异常码 IHasErrorCode:异常内容,IHasErrorDetails:对用户友好的IUserFriendlyException:IBusinessException(也有用户自定义Code、Details),IHasLogLevel级别:默认是Warning

对Exception的包装,基类需要的是SerializationInfo、StreamingContext以及message、innerException

UserFriendlyException是展示用户的,其它还有AbpAuthorizationException(403、401),AbpValidationException(400),EntityNotFoundException(404)、IBusinessException(401),AggregateException

ApplicationBuilder处理AbpExceptionHandlingMiddleware,它在IApplicationBuilder.Properties设置了_AbpExceptionHandlingMiddleware_Added,只增加一次,全局性的

对于所有都是适用的,并不是每一次访问都执行。

它对HttpContext.Item["_AbpActionInfo"]是Object的话,对对象序列化进行都是包装,它要转换异常内容,、序列化操作

异常码查找:可根据自定义的IHasErrorCode,映射成HttpStatusCode,若没有根据相应的Exception默认的HttpStatusCode,否则505错误

将异常转换成RemoteServiceErrorResponse,责任是DefaultExceptionToErrorInfoConverter,ITransientDependency类型

默认是不把所有详细异常给客户端,涉及RemoteServiceErrorInfo本地化,各种类型的Message、Code、Details赋值

详细异常是将包括UserFriendlyException、AbpValidationException、StackTrace、Inner exception逐行抛出

应用类,要经常MVC的,在AbpExceptionFilter出现,同样处理抛出异常

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!