异常处理

异常抽象:有异常码 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出现,同样处理抛出异常

你可能感兴趣的:(异常处理)