异常处理
Posted cloudsu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理相关的知识,希望对你有一定的参考价值。
异常抽象:有异常码 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出现,同样处理抛出异常
以上是关于异常处理的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin 协程Flow 流异常处理 ( 收集元素异常处理 | 使用 try...catch 代码块捕获处理异常 | 发射元素时异常处理 | 使用 Flow#catch 函数捕获处理异常 )
Kotlin 协程Flow 流异常处理 ( 收集元素异常处理 | 使用 try...catch 代码块捕获处理异常 | 发射元素时异常处理 | 使用 Flow#catch 函数捕获处理异常 )